modul pemograman terstruktur dengan c · lingkup materi pemrograman terstruktur : 1. komsep...

63
0 MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C ++ Oleh Rusnedi AG, S.Kom FAKULTAS ILMU KOMPUTER UNIVERSITAS SUBANG TAHUN 2010

Upload: others

Post on 15-Dec-2020

43 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

0

MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C ++

OlehRusnedi AG, S.Kom

FAKULTAS ILMU KOMPUTERUNIVERSITAS SUBANG

TAHUN 2010

Page 2: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

1

DASAR PEMROGRAMAN C++

A. TUJUAN

1. Menjelaskan tentang beberapa tipe data dasar (jenis dan jangkauannya)

2. Menjelaskan tentang Variabel

3. Menjelaskan tentang konstanta

4. Menjelaskan tentang berbagai jenis operator dan pemakaiannya

Lingkup Materi Pemrograman Terstruktur :

1. Komsep Pemrograman Terstruktur.Jenis-jenis bahasa pemrograman, Proses penyelesaian masalahStruktur program dalam C++

2. Variabel dan Tipe Data3. Instruksi I/O4. Konstanta5. Operator aritmatik dan beberapa fungsi built in6. Percabangan If

Switch7. Perulangan : While dan Do While8. Fungsi : dengan return value, tanpa return value9. Array10. Character sequence11. Pointer dan Memori dinamis12. Tipe struct13. User defined type (dengan menggunakan tipe yang ada)

Referensi:1. www.cplusplus.com/doc/tutorial2. www.cprogramming.com3. Pemrograman Terstruktur dengan C++

B. DASAR TEORI

1. Tipe Data Dasar

Data merupakan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variabel.

Konstanta menyatakan nilai yang tetap, sedangkan variabel menyatakan nilai yang dapat

diubah-ubah selama eksekusi berlangsung, Data berdasarkan jenisnya dapat dibagi menjadi

lima kelompok, yang dinamakan sebagai tipe data dasar. Kelima tipe data dasar adalah:

Bilangan bulat (integer)

Bilangan real presisi-tunggal

Page 3: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

2

Bilangan real presisi-ganda

Karakter

Tak-bertipe (void), keterangan lebih lanjut tentang void dijelaskan dalam Bab

Selanjutnya.

Kata-kunci yang berkaitan dengan tipe data dasar secara berurutan di antaranya adalah

int (short int, long int, signed int dan unsigned int), float, double, dan char. Tabel 2-1

memberikan informasi mengenai ukuran memori yang diperlukan dan kawasan dari

masing-masing tipe data dasar.

Tabel 1.Ukuran memori untuk tipe data

Untuk tipe data short int, long int, signed int dan unsigned int, maka ukuran memori yang

diperlukan serta kawasan dari masint-masing tipe data adalah sebagai berikut :

Tabel 2. Ukuran memori untuk tipe data int

Catatan :

Ukuran dan kawasan dari masing-masing tipe data adalah bergantung pada jenis

mesin yang digunakan (misalnya mesin 16 bit bisa jadi memberikan hasil berbeda

dengan mesin 32 bit).

2 Variabel

2.1 Aturan Pendefinisan Variabel

Aturan penulisan pengenal untuk sebuah variabel, konstanta atau fungsi yang

didefinisikan oleh pemrogram adalah sebagai berikut :

Pengenal harus diawali dengan huruf (A..Z, a..z) atau karakter garis bawah ( _).

Page 4: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

3

Selanjutnya dapat berupa huruf, digit (0..9) atau karakter garis bawah atau tanda

dollar ($).

Panjang pengenal boleh lebih dari 31 karakter, tetapi hanya 31 karakter pertama

yang akan dianggap berarti. Pengenal tidak boleh menggunakan nama yang

tergolong sebagai kata-kata cadangan (reserved words) seperti int, if, while

dan sebagainya.

2.2 Mendeklarasikan Variabel

Variabel digunakan dalam program untuk menyimpan suatu nilai, dan nilai yang ada

padanya dapat diubah-ubah selama eksekusi program berlangsung. Variabel yang akan

digunakan dalam program haruslah dideklarasikan terlebih dahulu. Pengertian deklarasi di

sini berarti memesan memori dan menentukan jenis data yang bisa disimpan di dalamnya.

Bentuk umum deklarasi variabel:

Pada pendeklarasian varibel, daftar-variabel dapat berupa sebuah variabel atau

beberapa variabel yang dipisahkan dengan koma.

Contoh:

int var_bulat1;

float var_pecahan1, var_pecahan2;

2.3 Memberikan Nilai ke Variabel

Untuk memberikan nilai ke variabel yang telah dideklarasikan, maka bentuk umum

pernyataan yang digunakan adalah :

Contoh:

int var_bulat = 10;

double var_pecahan = 10.5;

2.4 Inisialisasi Variabel

Adakalanya dalam penulisan program, setelah dideklarasikan, variabel langsung diberi

nilai awal. Sebagai contoh yaitu variabel nilai :

Page 5: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

4

int nilai;

nilai = 10;

Dua pernyataan di atas sebenarnya dapat disingkat melalui pendeklarasian yang disertai

penugasan nilai, sebagai berikut :

int nilai= 10;

Cara seperti ini banyak dipakai dalam program C, di samping menghemat penulisan

pernyataan, juga lebih memberikan kejelasan, khususnya untuk variabel yang perlu diberi

nilai awal (diinisialisasi).

3 Konstanta

Konstanta menyatakan nilai yang tetap. Berbeda dengan variabel, suatu konstanta tidak

dideklarasikan. Namun seperti halnya variabel, konstanta juga memiliki tipe. Penulisan

konstanta mempunyai aturan tersendiri, sesuai dengan tipe masing-masing.

1. Konstanta karakter misalnya ditulis dengan diawali dan diakhiri dengan tanda petik

tunggal, contohnya : ‘A’ dan ‘@’.

2. Konstanta integer ditulis dengan tanda mengandung pemisah ribuan dan tak

mengandung bagian pecahan, contohnya : –1 dan 32767.

3. Konstanta real (float dan double) bisa mengandung pecahan (dengan tanda berupa

titik) dan nilainya bisa ditulis dalam bentuk eksponensial (menggunakan tanda e),

contohnya : 27.5f (untuk tipe float) atau 27.5 (untuk tipe double) dan 2.1e+5

(maksudnya 2,1 x 105 ).

4. Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan

tanda petik-ganda (“), contohnya :“Pemrograman Dasar C”.

4 Operator

Operator merupakan simbol atau karakter yang biasa dilibatkan dalam program untuk

melakukan sesuatu operasi atau manipulasi, seperti menjumlahkan dua buah nilai,

memberikan nilai ke suatu variabel, membandingkan kesamaan dua buah nilai. Sebagian

operator C tergolong sebagai operator binary, yaitu operator yang dikenakan terhadap dua

buah nilai (operand).

Contoh :

a + b

Page 6: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

5

Simbol + merupakan operator untuk melakukan operasi penjumlahan dari kedua

operandnya (yaitu a dan b). Karena operator penjumlahan melibatkan dua operator ini

tergolong sebagai operator binary.

-c

Simbol - (minus) juga merupakan operator. Simbol ini termasuk sebagai operator unary,

yaitu operator yang hanya memiliki sebuah operand (yaitu c pada contoh ini).

4.1. Operator Aritmatika

Operator untuk operasi aritmatika yang tergolong sebagai operator binary adalah :

* perkalian

/ pembagian

% sisa pembagian

+ penjumlahan

- pengurangan

Adapun operator yang tergolong sebagai operator unary.

- tanda minus

+ tanda plus

Contoh pemakaian operator aritmatika misalnya untuk memperoleh nilai diskriminan dari

suatu persamaan kuadrat : D = b2 – 4ac

/* File program : diskrim.cMenghitung diskriminan pers kuadrat ax^2 + bx + c = 0 */# include <stdio.h>main(){float a,b,c,d;a = 3.0f;b = 4.0f;c = 7.0f;d = b*b-4*a*c;printf(“Diskriminan =%f\n”,d);}

Contoh eksekusi :

Diskriminan = -84.000000

Operator yang telah dituliskan di atas, yang perlu diberi penjelasan lebih lanjut adalah

operator sisa pembagian. Beberapa contoh berikut kiranya akan memperjelas makna dari

operator ini .

Sisa pembagian bilangan 7 dengan 2 adalah 1 (7 % 2 1)

Sisa pembagian bilangan 6 dengan 2 adalah 0 (6 % 2 0)

Page 7: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

6

Sisa pembagian bilangan 8 dengan 3 adalah 1 (8 % 3 2)

Kegunaan operator ini diantaranya bisa dipakai untuk menentukan suatu bilangan bulat

termasuk ganjil atau genap, berdasarkan logika : “Jika bilangan habis dibagi dua (sisanya nol),

bilangan termasuk genap. Sebaliknya, termasuk ganjil”.

4.2. Operator Penurunan dan Penaikan

Masih berkaitan dengan operasi aritmatika, C menyediakan operator yang disebut sebagai

operator penaikan dan operator penurunan, yaitu :

++ operator penaikan

operator penurunan

Operator penaikan digunakan untuk menaikkan nilai variabel sebesar satu. Penempatan

operator terhadap variabel dapat dilakukan di muka atau di belakangnya, contohnya :

x = x+1;

y = y+1;

Bisa ditulis menjadi :

++x;

--y;

atau :

x++;

y--;

bergantung pada kondisi yang dibutuhkan oleh pemrogram. Di bawah ini adalah contoh yang

akan menunjukkan perbedaan pemakaian dan hasil dari ++x dengan x++ (atau pemakaian

y-- dengan –-y).

/* File program : pre_post.cContoh penggunaan pre & post Increment operator */#include <stdio.h>main(){int count = 0, loop;loop = ++count; /* count=count+1; loop=count; */printf("loop = %d, count = %d\n", loop, count);loop = count++; /* loop=count; count=count+1; */printf("loop = %d, count = %d\n", loop, count);}

Contoh eksekusi :loop = 1, count = 1loop = 1, count = 2

4.3. Prioritas Operator Aritmatika

Page 8: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

7

Tabel di bawah ini memberikan penjelasan mengenai prioritas dari masingmasing

operator. Operator yang mempunyai prioritas tinggi akan diutamakan dalam hal pengerjaan

dibandingkan dengan operator yang memiliki prioritas lebih rendah.

Tabel 2.3 Tabel prioritas operator aritmatika dan urutan pengerjaannya

*)Bentuk unary + dan unary – memiliki prioritas yang lebih tinggi daripada bentuk binary + dan

binary –

4.4. Operator Penugasan

Operator penugasan (assignment operator) digunakan untuk memindahkan nilai dari

suatu ungkapan (expression) ke suatu pengenal. Operator pengerjaan yang umum

digunakan dalam bahasa pemrograman, termasuk bahasa C adalah operator sama dengan.

(=). Contohnya :

fahrenheit = celcius * 1.8 + 32;

Maka ‘=’ adalah operator penugasan yang akan memberikan nilai dari ungkapan : celcius

* 1.8 + 32 kepada variabel fahrenheit.

Bahasa C juga memungkinkan dibentuknya statemen penugasan menggunakan

operator pengerjaan jamak dengan bentuk sebagai berikut :

pengenal1 = pengenal2 = … = ungkapan ;

Misalnya :

a = b = 15;

maka nilai variabel ‘a ‘ akan sama dengan nilai variabel ‘b‘ akan sama dengan 15.

4.5 Operator Kombinasi (Pemendekan)

C menyediakan operator yang dimaksudkan untuk memendekkan penulisan operasi

penugasan semacam

x = x + 2;

y = y * 4;

menjadi

Page 9: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

8

x += 2;

y *= 4;

Daftar berikut memberikan seluruh kemungkinan operator kombinasi dalam suatu

pernyataan serta pernyataan padanannya.

Tabel 4. Seluruh kemungkinan operator kombinasi dan padanannya

C. TUGAS PENDAHULUAN

1. Berapakah nilai jawaban yang ditampilkan oleh program di bawah ini :

#include <stdio.h>main(){int jawab, hasil;jawab = 100;hasil = jawab - 10;printf("Jawabannya adalah %d\n", hasil + 6);}

Page 10: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

9

MATERI 1

A. STRUKTUR PROGRAM

Secara umum struktur program dalam C++ adalah sebagai berikut:

Keterangan :1. Deklarasi header file diawali dengan #include <.......> Titik-titik diisi dengan nama

header file yang ingin digunakan. Header file merupakan suatu fungsi yang mendukung eksekusi instruksi tertentu dalam C++

2. Deklarasi konstanta (bisa ada bisa tidak)3. Deklarasi variabel global (bisa ada bisa tidak)4. Deklarasi fungsi bisa ada bisa tidak. Fungsi juga dapat diletakkan seletah fungsi

main().5. Deklarasi class (bisa ada bisa tidak)6. Fungsi utama harus ada, diawali dengan { dan diakhiri dengan }. Didalamnya

berisi instruksi-instruksi yang nantinya akan dieksekusi berikut deklarasi variabel (variabel lokal) yang diperlukan.

Beberapa header file yang sering digunakan :1. iostream.h

Untuk instruksi:cout<<”.....................”;cin>>nama_var;

2. conio.hUntuk instruksi:getch();clrscr();

Instruksi untuk memindah cursor dibaris berikut:1. ”\n”2. <<endl;

Menuliskan komentar :1. //

Jika komentar hanya satu baris

deklarasi header file/preprocessordeklarasi konstantadeklarasi var globaldeklarasi fungsideklarasi class

program utama (fungsi utama)

main() { ……. ……..}

Page 11: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

10

2. /*.....*/Sangat berguna jika komentar lebih dari satu baris.

C++ bersifar case sensitive membedakan huruf besar dan huruf kecil, sehingga:1. instruksi harus ditulis dalam huruf kecil2. Variabel yang ditulis dengan huruf kecil dan huruf besar berbeda.

Contoh program :

Contoh 1://ini contoh pertama#include <iostream.h>#include <conio.h>

main() {cout<<"Pemrograman Terstruktur";getch();}

Contoh 2://ini contoh kedua#include <iostream.h>#include <conio.h>

main() {cout<<"Pemrograman Terstruktur";cout<<"Program D3";cout<<"Jurusan Manajemen Informatika";getch();}

Contoh 3://ini contoh ketiga#include <iostream.h>#include <conio.h>

main() {cout<<"Pemrograman Terstruktur\n";cout<<"Program D3\n";cout<<"Jurusan Manajemen Informatika";getch();}

Page 12: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

11

Contoh 4 ://ini contoh keempat#include <iostream.h>#include <conio.h>

main() {cout<<"Pemrograman Terstruktur"<<endl;cout<<"Program D3"<<endl;cout<<"Jurusan Manajemen Informatika"<<endl;getch();}

Contoh 5 ://ini contoh kelima/* Pengggunaan \nuntuk mengatur tampilan */#include <iostream.h>#include <conio.h>

main() {cout<<"Pemrograman\n Terstruktur\n";cout<<"\nProgram D3";cout<<"\nJurusan \nManajemen Informatika";getch();}

B. VARIABEL DAN TIPE DATA

Variabel merupakan sarana yang digunakan untuk menyimpan data. Nama variabel (identifier) bebas, tetapi harus memperhatikan hal-hal sebagai berikut:

1. tidak boleh ada spasinya2. tidak boleh mengandung operator aritmatik3. tidak boleh diawali dengan angka4. tidak boleh merupakan reserved word dalam bahasa pemrograman.5. mencerminkan data yang akan disimpan.

Macam-macam tipe data :

Name Description Size* Range*

char Character or small integer.

1bytesigned: -128 to 127unsigned: 0 to 255

short int

(short) Short Integer. 2bytes

signed: -32768 to 32767unsigned: 0 to 65535

Page 13: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

12

int Integer. 4bytes

signed: -2147483648 to 2147483647unsigned: 0 to 4294967295

long int

(long) Long integer. 4bytes

signed: -2147483648 to 2147483647unsigned: 0 to 4294967295

boolBoolean value. It can take one of two values: true or false.

1byte true or false

float Floating point number. 4bytes 3.4e +/- 38 (7 digits)

double Double precision floating point number. 8bytes 1.7e +/- 308 (15

digits)

long double

Long double precision floating point number.

8bytes 1.7e +/- 308 (15 digits)

wchar_t Wide character. 2bytes 1 wide character

*) http://cplusplus.com/doc/tutorial/variables.htmlsize dan range tergantung compilernya

Deklarasi variabel

Contoh:int a;float bchar n_hrf;double gaji;char nama[20];

dsb.

Page 14: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

13

Contoh lain:

int a;int b;int c;

dapat disingkat penulisannya menjadi:int a,b,c;

Memberi nilai variabel 1. Inisialisasi (variabel diberi nilai langsung)

Contoh 6://a dan c diinisialisasi#include <iostream.h>#include <conio.h>main() { int a; float c; a=5; c=6; cout<<"Nilai a = "<<a; cout<<"\nNilai c = "<<c; getch();}

Contoh 7://a dan c diinisialisasi#include <iostream.h>#include <conio.h>main() { int a; float c; a=5.7; c=6.7; cout<<"Nilai a = "<<a; cout<<"\nNilai c = "<<c; getch();}Inisialisasi harus sesuai dengan tipe datanya.

Contoh 8://cara lain untuk inisialisasi#include <iostream.h>#include <conio.h>main() { int a=5; float c=6; cout<<"\nNilai a = "<<a; cout<<"\nNilai c = "<<c; getch();}

Page 15: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

14

Contoh 9://inisialisasi untuk variable yang nilainya sama#include <iostream.h>#include <conio.h>main() { int a,b,c; a=b=c=5; cout<<"\nNilai a = "<<a; cout<<"\nNilai b = "<<b; cout<<"\nNilai c = "<<c; getch();}

2. Input dataMenggunakan instruksi cin>>

Contoh 10://input data dengan cin>>#include <iostream.h>#include <conio.h>main() { int a; float c; cin>>a; cin>>c; cout<<"\nNilai a = "<<a; cout<<"\nNilai c = "<<c; getch();}

Contoh 11://input dengan tambahan instruksi cout<<#include <iostream.h>#include <conio.h>main() { int a; float c; cout<<"Masukkan nilai a = ";cin>>a; cout<<"Masukkan nilai c = ";cin>>c; cout<<"\nNilai a = "<<a; cout<<"\nNilai c = "<<c; getch();}

3. ProsesCth: adanya operator aritmatik (+,-,*,/)

Contoh 12://penggunaan operator +#include <iostream.h>#include <conio.h>main() { int a,b,c; a=6; b=7; c=a+b; cout<<"\nNilai a = "<<a; cout<<"\nNilai b = "<<b; cout<<"\nNilai c = "<<c; getch();}

Page 16: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

15

MATERI IIDEKLARASI KONSTANTA DAN OPERATOR ARITMATIK

Kompetensi Dasar:Dapat menggunakan deklarasi konstanta dan operator aritmatik dalam program.

Indikator Kompetensi:1. Dapat mendeklarasikan konstanta.2. Dapat menuliskan ekspresi aritmatik dengan benar, berikut pemilihan tipe data

yang benar.3. Dapat menggunakan operator gabungan dan ekspresi increasing dan decreasing.4. Dapat melakukan type casting dalam suatu ekspresi aritmatik5. Mengaplikasikan konstanta dan operator aritmatik dalam program.

A. Deklarasi konstantaAda dua cara untuk mendeklarasikan konstanta:

1. Setelah deklarasi header file dengan menggunakan #define

Contoh 1://contoh deklarasi konstanta 1#include <iostream.h>#include <conio.h>#define phi 3.14#define r1 3#define r2 10.7#define kar 'A'#define teks "Contoh deklarasi konstanta"#define x true

main() { cout<<teks<<"\n"; cout<<kar<<"\n"; cout<<x<<"\n"; cout<<phi<<"\n"; cout<<r1<<"\n"; cout<<r2<<"\n"; getch();}

Keterangan : phi dan r2 adalah konstanta yang tipenya float r1 adalah konstanta yang bertipe int kar adalah konstanta yang bertipe char teks adalah konstanta karakter string, tipe char x adalah konstanta yang tipenya boolean

Page 17: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

16

2. Di dalam fungsi dengan menggunakan constContoh 2:// contoh deklarasi konstanta 2#include <iostream.h>#include <conio.h>

main() { const float phi=3.14; const int r1=3; const float r2=10.7; const char kar='A'; const char teks[30]="Contoh deklarasi konstanta" ; const bool x=true; cout<<teks<<"\n"; cout<<kar<<"\n"; cout<<x<<"\n"; cout<<phi<<"\n"; cout<<r1<<"\n";

cout<<r2<<"\n"; getch();}

Constanta tidak dapat diubah nilainya, berbeda dengan proses inisialisasi, dimana nilainya dapat diubah-ubah.

B. Operator AritmatikOperator aritmatik terdiri :

1. Penjumlahan (+)2. Pengurangan (-)3. Perkalian (*)4. Pembagian (/)5. Modulo (%)

Contoh 3://operator aritmatik 1#include <iostream.h>#include <conio.h>#define phi 3.14#define r1 10#define teks "Program mencari luas lingkaran\n\n"

main() { cout<<teks; float r, luas; cout<<"Luas lingkaran pertama = "<<phi*r1*r1; cout<<"\nNilai jari-jari = ";cin>>r; luas=phi*r*r; cout<<"\nLuas lingkaran kedua = "<<luas; getch();}

Page 18: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

17

Contoh 3://operator aritmatik 2#include <iostream.h>#include <conio.h>

main() { int a,b,hasil,sisa; cout<<"Contoh penggunaan / dan %\n\n"; cout<<"Masukkan angka pertama (a) = ";cin>>a; cout<<"Masukkan angka kedua (b) = ";cin>>b; hasil=a/b; sisa=a%b; cout<<"\nHasil pembagian bulat = "<<hasil; cout<<"\nSisa hasil bagi = "<<sisa; getch();}

Tipe Casting

Dari contoh 3 dapat diketahui bahwa:

Jika kita mempunyai dua variabel integer (a dan b), dan kita ingin membagi keduanya

(a/b), hasilnya diimpan ke variabel hasil yang tipenya int , maka hasil yang tersimpan

hanya nilai integernya saja.

Bagaimana jika kita ingin agar dua bilangan bulat yang dibagi tersebut hasilnya dapat

memuat angka desimal?

Caranya :

Tipe variabel yang menampung hasil harus float dan ubah salah satu data yang diproses

menjadi float sementara (type casting)

Contoh 4://operator aritmatik 3//pembagian dengan hasil bertipe float, hasil yang tersimpan adalah integernya#include <iostream.h>#include <conio.h>

main() { int a,b; float c; cout<<"Contoh penggunaan / dan %\n\n"; cout<<"Masukkan angka pertama (a) = ";cin>>a; cout<<"Masukkan angka kedua (b) = ";cin>>b; c=a/b; cout<<"\nHasil pembagian = "<<c; getch();}

Page 19: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

18

Contoh 5://operator aritmatik 4//contoh penggunaan type casting#include <iostream.h>#include <conio.h>

main() { int a,b; float c; cout<<"Contoh penggunaan / dan %\n\n"; cout<<"Masukkan angka pertama (a) = ";cin>>a; cout<<"Masukkan angka kedua (b) = ";cin>>b; c=float(a)/b; cout<<"\nHasil pembagian = "<<c; getch();}

Mengatur angka desimal dan non desimal

Caranya:1. menggunakan instruksi setprecision(n)2. menggunakan instruksi setiosflag(ios::fixed)Kedua instruksi diatas memerlukan header file iomanip.h

Contoh 6://penggunaan setprecision#include <iostream.h>#include <conio.h>#include <iomanip.h>

main() { int a,b; float c; cout<<"Contoh penggunaan / dan %\n\n"; cout<<"Masukkan angka pertama (a) = ";cin>>a; cout<<"Masukkan angka kedua (b) = ";cin>>b; c=float(a)/b; cout<<"\nHasil pembagian = "<<setprecision(3)<<c; getch();}

Keterangan : setprecision (3) tempat yang dipesan baik untuk nilai bulat maupun desimal adalah 3.

Page 20: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

19

Contoh 7://penggunaan setprecision dan setiosflags#include <iostream.h>#include <conio.h>#include <iomanip.h>

main() { int a,b; float c; cout<<"Contoh penggunaan / dan %\n\n"; cout<<"Masukkan angka pertama (a) = ";cin>>a; cout<<"Masukkan angka kedua (b) = ";cin>>b; c=float(a)/b; cout<<"\nHasil pembagian = "

<<setiosflags(ios::fixed)<<setprecision(2)<<c; getch();}

Keterangan :setiosflags(ios::fixed)<<setprecision(2) tempat yang dipesan untuk angka desimal saja.

Contoh 8://penggunaan setprecision untuk data yang nilainya besar#include <iostream.h>#include <conio.h>#include <math.h>#include <iomanip.h>

main() { char nama[10]; double gpokok,pot,tunj,gbersih; cout<<"Nama karyawan : ";cin>>nama; cout<<"Gaji pokok : ";cin>>gpokok; cout<<"Tunjangan : ";cin>>tunj; cout<<"Potongan : ";cin>>pot; gbersih=gpokok+tunj-pot; cout<<"\n\nGaji bersih : "<<setpecision(10)<<gbersih; getch();}

Keterangan:Instruksi setprecision(10) bisa dihilangkan seandainya gaji bersih kurang dari 1 juta, tetapi jika lebih dari 1 juta maka akan ditampilkan dalam bentuk eksponensial sehingga perlu ketelitian dalam membaca hasilnya.

Page 21: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

20

Operator gabunganAntara lain : +=, -=, *=, /=, %=

Operator Contoh Ekivalen

+= bonus += 500; bonus = bonus + 500;

-= budget -= 50; budget = budget - 50;

*= gaji *= 1.2; gaji=gaji * 1.2;

/= faktor/= 50; faktor= faktor/.50;

%= jml_hari %=7; jml_hari =jml_hari % 7;

Contoh 8:// operator gabungan#include <iostream.h>#include <conio.h>main(){ int i = 4; int j = 8; int k = 12; int jwb; jwb = i + j; cout << jwb << "\n"; jwb += k; cout << jwb << "\n"; jwb /= 3; cout << jwb << "\n"; jwb -= 5; cout << jwb << "\n"; jwb *= 2; cout << jwb << "\n"; jwb %= 4; cout << jwb << "\n"; jwb *= 5+3; cout << jwb << "\n"; jwb += 4-2; cout << jwb << "\n"; getch();}

Increase dan DecreaseOperator Contoh Deskripsi Pernyataan yang ekivalen

++ J++; posfix j = j + 1; j += 1;

++ ++j; prefix j = j + 1; j += 1;

-- j--; postfix j = j - 1; j -= 1;

-- --j; prefix j = j - 1; j -= 1;

Page 22: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

21

Contoh 9 :// increase dan decrease#include <iostream.h>#include <conio.h>main(){ int i1=4,i2=4; int j1=8,j2=8; int a,b,c,d; a=++i1; b=i2++; c=--j1; d=j2--; cout<<"\nNilai a = "<<a; cout<<"\nNilai i1 = "<<i1; cout<<"\n\nNilai b = "<<b; cout<<"\nNilai i2 = "<<i2; cout<<"\n\nNilai c = "<<c; cout<<"\nNilai j1 = "<<j1; cout<<"\n\nNilai d = "<<d; cout<<"\nNilai j2 = "<<j2; getch();}

Fungsi built-in matematik yang sering digunakan

Fungsi-fungsi tersebut antara lain:1. Fungsi sqrt(x) untuk mencari x.2. Fungsi pow(x,y) digunakan untuk mencari xy

Kedua fungsi tersebut harus menggunakan header file math.h

Contoh 10://penggunaan sqrt dan pow#include <iostream.h>#include <conio.h>#include <math.h>

main() { float a,b,c,d; a=5; b=7; c=sqrt(a); d=pow(a,b); cout<<"\nAkar "<<a<<" = "<<c; cout<<"\n"<<a<<" pangkat "<<b<<" = "<<d; getch();}

Page 23: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

22

MATERI IVPERCABANGAN

Kompetensi Dasar:Dapat menggunakan instruksi percabangan di dalam pemecahan masalah.

Indikator Kompetensi:1. Mengenal dan memahami 3 bentuk percabangan.2. Memahami operator ?, operator relasional dan operator logika.3. Dapat menggunakan operator ? untuk suatu aplikasi.4. Dapat menggunakan instruksi percabangan untuk suatu aplikasi, baik yang

memerlukan oprator logika maupun tidak.

PERCABANGAN DENGAN IF

Dikenal sebagai instruksi bersyarat, artinya instruksi tertentu hanya akan dieksekusi jika syarat tertentu dipenuhi pula.

Syntax :Bentuk 1:IF (kondisi){ statement yang dikerjakan jika kondisi benar}

Ket: Jika kondisi salah, tidak akan mengerjakan apapun didalam instruksi IF (langsung menuju ke instruksi berikutnya)

Bentuk 2:IF (kondisi){ statement yang dikerjakan jika kondisi benar}ELSE{ statement yang dikerjakan Jika kondisi salah}

Bentuk 3:IF (kondisi1){ statement yang dikerjakan jika kondisi1 benar}ELSE

IF (kondisi2){ statement yang dikerjakan jika kondisi2 benar}ELSE

IF (kondisi3)

Page 24: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

23

{ statement yang dikerjakan Jika kondisi3 salah}...ELSE{ statement yang dikerjakan Jika kondisi1 s.d kondisi-n salah (tidak terpenuhi)}

Kondisi atau syarat harus ditulis dalam tanda kurung. Jika instruksi yang dikerjakan pada saat kondisi benar/salah masing-masing tidak lebih dari satu instruksi, maka tanda kurung kurawal buka/tutup bersifat optional (boleh digunakan, boleh tidak)

Dalam menuliskan kondisi/syarat selalu digunakan operator relasional sebagai sarana untuk melakukan proses pengecekan a. l:

Operator Arti> Lebih besar< Lebih kecil

= = Sama dengan>= Lebih atau sama<= Kurang atau sama!= Tidak sama dengan

Selain itu jika syarat yang digunakan lebih dari satu sering digunakan operator logika yakni :

Operator Arti&& And

|| Or! Not

Contoh 1://penggunaan if#include <iostream.h>#include <conio.h>

main() { int a; cout<<"Masukkan nilai a = ";cin>>a; a=a+2; if (a>5) a=a-6; a=a+3; cout<<"\nNilai a sekarang = "<<a; getch();}

Page 25: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

24

Contoh diatas menggunakan if bentuk 1, jika kondisi/syarat (a>5) dipenuhi akan mengeksekusi instruksi a=a-6, tidak dipenuhi maka didalam instruksi if tidak mengerjakan apapun, langsung menuju instruksi setelah if.

Contoh 2:/*program contoh penggunaanperintah if else*/#include <iostream.h>#include <conio.h>main (){ float nmid, nujian; char ket,nama[20]; cout<<"Menentukan lulus tidaknya mahasiswa\n"; cout<<"-----------------------------------\n"; cout<<"Nama mhs : ";cin>>nama; cout<<"Nilai mid : ";cin>>nmid; cout<<"Nilai ujian : ";cin>> nujian; float rata=(nmid+nujian)/2; if (rata >=60)

ket='L'; else ket='T'; cout<<"\nKeterangan(L=Lulus/T=Tidak) : "<<ket; cout<<"\nNilai rata-rata : "<<rata; getch();}

Contoh diatas menggunakan if bentuk 2, jika kondisi/syarat (rata>=60) dipenuhi maka akan mengerjakan instruksi dibawah if, tetapi jika tidak dipenuhi maka akan mengerjakan istruksi setelah else.

Instruksi percabangan dalam bentuk 2, ada yang dapat dituliskan dengan operator kondisi (?) seperti contoh berikut:

Contoh 3://program contoh penggunaan operator ?#include <iostream.h>#include <conio.h>main (){ float nmid, nujian; char ket,nama[20]; cout<<"Menentukan lulus tidaknya mahasiswa\n"; cout<<"-----------------------------------\n"; cout<<"Nama mhs : ";cin>>nama; cout<<"Nilai mid : ";cin>>nmid; cout<<"Nilai ujian : ";cin>> nujian; float rata=(nmid+nujian)/2; ket=(rata>=60)?'L':'T'; cout<<"\nKeterangan(L=Lulus/T=Tidak) : "<<ket;

Page 26: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

25

cout<<"\nNilai rata-rata : "<<rata; getch();}

Contoh berikut menggunakan if bentuk 3, dimana ada banyak kondisi yang masing-masing punya instruksi tersendiri untuk dieksekusi.

Contoh 4:/*program contoh penggunaanperintah if else*/#include <iostream.h>#include <conio.h>main (){ float nmid, nujian; char ket,nama[20]; cout<<"Menentukan lulus tidaknya mahasiswa\n"; cout<<"-----------------------------------\n"; cout<<"Nama mhs : ";cin>>nama; cout<<"Nilai mid : ";cin>>nmid; cout<<"Nilai ujian : ";cin>> nujian; float rata=(nmid+nujian)/2; if (rata >=60)

ket='L'; else ket='T'; char nh; if (rata>=80) nh='A'; else if (rata>=60) nh='B'; else if (rata>=40) nh='C'; else if (rata>=20) nh='D'; else nh='E'; cout<<"\nKeterangan(L=Lulus/T=Tidak) : "<<ket; cout<<"\nNilai rata-rata : "<<rata; cout<<"\nNilai huruf : "<<nh; getch();}

Jika kondisi yang digunakan dalam percabangan bentuk 3 merupakan konstanta integer atau karakter, maka dapat tuliskan dengan instruksi switch.Syntax:

Page 27: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

26

switch (ekpresi){ case konstanta_l: pernyataan;

. . break;

case konstanta_2: pernyataan; . . break; . . default: pernyataan; . .}

Kasus ada pada contoh 5, dituliskan dengan instruksi swicth pada contoh 6 :

Contoh 5:/*program contoh penggunaanperintah if else*/#include <iostream.h>#include <conio.h>main (){ char nh,nama[20],mk[20]; cout<<"Mengubah nilai huruf menjadi angka\n"; cout<<"-----------------------------------\n"; cout<<"Nama mhs : ";cin>>nama; cout<<"Mata kuliah : ";cin>>mk; cout<<"Nilai huruf : ";cin>> nh; int na; if (nh=='A') na=4; else if (nh=='B') na=3; else if (nh=='C') na=2; else if (nh=='D') na=1; else na=0; cout<<"\nNilai angka : "<<na;

getch();}

Page 28: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

27

Contoh 6:/*program contoh penggunaanperintah switch*/#include <iostream.h>#include <conio.h>main (){ char nh,nama[20],mk[20]; cout<<"Mengubah nilai huruf menjadi angka\n"; cout<<"-----------------------------------\n"; cout<<"Nama mhs : ";cin>>nama; cout<<"Mata kuliah : ";cin>>mk; cout<<"Nilai huruf : ";cin>> nh; int na; switch (nh) { case 'A': na=4; break; case 'B': na=3; break; case 'C': na=2; break; case 'D': na=1; break; case 'E': na=0; break; default: cout<<"\nNilai yang anda masukkan salah"; } cout<<"\nNilai angka : "<<na; getch();}

Page 29: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

28

MATERI IVPERULANGAN (LOOPING)

Kompetensi Dasar:Dapat menggunakan instruksi perulangan dalam pemecahan masalah.

Indikator Kompetensi:1. Mengenal dan memahami kapan diperlukannya perulangan.2. Memahami syntax perintah perulangan3. Dapat menggunakan perulangan untuk suatu aplikasi.

PERULANGAN

Contoh berikut digunakan untuk menampilkan tulisan ”Selamat datang” dilayar sebanyak 5 baris.

Contoh 1:#include <iostream.h>#include <conio.h>

main() { cout<<"\nSelamat datang"; cout<<"\nSelamat datang"; cout<<"\nSelamat datang"; cout<<"\nSelamat datang"; cout<<"\nSelamat datang"; getch();}

Tidak menjadi masalah jika yang ditampilkan ke layar hanya 5 baris, tetapi bagaimana

halnya jika kita ingin menampilkan tulisan tersebut dilayar sebanyak 10 baris, 50 baris atau

bahkan lebih.

Tentunya sangat tidak efisien jika harus mengcopy instruksi yang sama berulang ulang.

Itulah sebabnya muncul instruksi perulangan untuk mengatasi permasalahan tersebut.

Ada dua jenis perulangan:

1. Perulangan yang jumlahnya diketahui pasti.

Menggunakan instruksi for, while atau do while

2. Perulangan yang jumlahnya tidak diketahui pasti, tetapi diketahui kapan perulangan

tersebut dikerjakan (syarat agar perulangan dikerjakan).

Menggunakan instruksi while atau do while.

Page 30: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

29

PERULANGAN YANG JUMLAHNYA DIKETAHUI

Perulangan Dengan ForSyntaxnya adalah sebagai berikut:

for (inisialisasi; kondisi/syarat; kenaikan-indek){ instruksi; . .}

Jalannya instruksi adalah sebagai berikut:

1. Pertama instruksi pada inisialisasi akan dijalankan. Umumnya inisialisasi

digunakan untuk memberi nilai awal variabel indek, walaupun tidak menutup

kemungkinan, dapat juga digunakan untuk inisialisasi variabel lain yang

diperlukan. Inisialisasi ini hanya dijalankan satu kali saja.

2. Berikutnya kondisi akan dicek, dipenuhi atau tidak.

3. Jika kondisi/syarat dipenuhi maka instruksi di dalam instruksi for akan dijalankan.

4. Akhirnya, akan mengeksekusi kenaikan indek. Untuk selanjutnya kembali ke

langkah 2.

Jika program pada contoh 1 ditulis dengan instruksi for, maka akan menjadi seperti di bawah ini:

Contoh 2:#include <iostream.h>#include <conio.h>

main() { for(int i=1;i<=5;i++) cout<<"\nSelamat datang"; getch();}

Pernyataan untuk inisialisasi dapat dituliskan lebih dari satu.

Contoh 3:#include <iostream.h>#include <conio.h>

main() { int a; for(int i=1,a=5;i<=10;i++) { cout<<"\nNilai ke "<<i<<" = "<<a; a+=5; } getch();}

Page 31: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

30

Contoh 3 diatas dapat juga dituliskan dengan cara sebagai berikut:

Contoh 4:#include <iostream.h>#include <conio.h>

main() { int a=5; int i=1; for(;i<=10;i++) { cout<<"\nNilai ke "<<i<<" = "<<a; a+=5; } getch();}

Dapat juga dituliskan dengan cara sebagai berikut:

Contoh 5:#include <iostream.h>#include <conio.h>

main() { int a=5; int i=1; for(;i<=10;) { cout<<"\nNilai ke "<<i<<" = "<<a; a+=5; i++; } getch();}

Untuk pemahaman terhadap contoh 3, 4 dan 5 perhatikan perbedaan penulisan pada

pernyataan for nya.

Indek untuk perulangan for tidak harus selalu bertambah dengan 1 (i++), tetapi juga bisa

dengan 2,3,4, atau lainnya tergantung kebutuhan, bahkan indek juga bisa dibuat menurun

(i--) seperti pada contoh 5a dan 5b berikut ini.

Contoh 5a:#include <iostream.h>#include <conio.h>

main() { int b; cout<<"Masukkan batas = ";cin>>b; for(int i=1;i<=b;i=i+2) cout<<i<<"\n"; getch();}

Page 32: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

31

Contoh 5b:#include <iostream.h>#include <conio.h>

main() { int b; cout<<"Masukkan batas = ";cin>>b; for(int i=b;i>=1;i=i-2) cout<<i<<"\n"; getch();}

Perulangan Dengan WhileSyntax :

while (syarat){ instruksi; . .}

Jika contoh no 2 dan 3 akan ditulis menggunakan instruksi while maka akan menjadi sbb:

Contoh 6:#include <iostream.h>#include <conio.h>

main() { int i=1; while (i<=5) { cout<<"\nSelamat datang"; i++; } getch();}

Contoh 7:#include <iostream.h>#include <conio.h>

main() { int a=5,i=1; while (i<=10) { cout<<"\nNilai ke "<<i<<" = "<<a; a+=5; i++; } getch();}

Page 33: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

32

Perulangan Dengan Do WhileSyntax:do{ instruksi; . .}while (syarat);

Mirip dengan while, perbedaannya adalah:

While Do whileBisa jadi tidak akan pernah dikerjakan jika syarat tidak dipenuhi.Ini dikarenakan sebelum instruksi dikerjakan, syarat dicek terlebih dahulu.

Minimal dikerjakan satu kali walaupun syarat tidak dipenuhi.Ini dikarenakan instruksi dikerjakan dahulu, baru syarat dicek untuk melanjutkan perulangan.

Jika contoh 6 dan 7 ditulis dengan do while maka, akan menjadi sbb:

Contoh 8:#include <iostream.h>#include <conio.h>

main() { int i=1; do { cout<<"\nSelamat datang"; i++; } while (i<=5); getch();}

Contoh 9:#include <iostream.h>#include <conio.h>

main() { int a=5,i=1; do { cout<<"\nNilai ke "<<i<<" = "<<a; a+=5; i++; } while (i<=10); getch();}

Page 34: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

33

Contoh kasus untuk latihan:1. Buat program untuk mencari rata-rata dari n bilangan.2. Buat program untuk mencari total penjualan dari n jenis barang, dan pemberian

diskon penjualan, dengan ketentuan, Pembelian diatas 500 ribu mendapat diskon 10%Pembelian diatas 200 ribu sampai dengan 500 ribu mendapat diskon 5%Pembelian 200 ribu kebawah tidak mendapat diskon.

3. Buat program untuk mencari ipk dari n matakuliah yang diambil seorang mahasiswa.

Untuk masing-masing nomor buat dengan instruksi for, while dan do while.

PERULANGAN YANG JUMLAHNYA TDK PASTI

Perhatikan contoh 10 berikut ini. Program digunakan untuk menginputkan n data.

Seandainya pada saat program dijalankan n diinputkan 10, tetapi karena kesalahan, terinput

100 maka tetap harus diinputkan 100 data. Ada cara lain untuk ini, dimana menggunakan

perulangan yang tidak diketahui pasti jumlahnya, tetapi diketahui kapan perulangan

dikerjakan, yakni selama masih ada data lagi. Sehingga program dimodifikasi menjadi

contoh no 11.

Contoh 10:#include <iostream.h>#include <conio.h>

main() { int b,angka; cout<<"Masukkan banyaknya data = ";cin>>b; for(int i=1;i<=b;i++) { cout<<"Data ke "<<i<<" = ";cin>>angka; } getch();}

Contoh 11:#include <iostream.h>#include <conio.h>

main() { int angka; char ada; cout<<"Apakah ada data yang ingin diinputkan (Y/T) = ";cin>>ada; while (ada=='Y') { cout<<"\nData = ";cin>>angka; cout<<"Apakah ada data yang ingin diinputkan (Y/T) = ";cin>>ada; } getch();}

Page 35: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

34

MATERI VPOINTER DAN MEMORI DINAMIS

Kompetensi:Mampu memahami konsep pointer beserta penggunaanya

Indikator:1. Mampu mendeklarasikan pointer.2. Mampu menggunakan pointer dalam program

Operator Reference (&)Digunakan untuk mengetahui alamat memori yang ditempat oleh suatu variabel.

Contoh 1#include <iostream.h>#include <conio.h>

main() { int x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; getch();}

Program diatas akan menampilkan nilai variabel x, dan memori yang ditempati oleh x.

Mendeklarasikan tipe pointer.Dapat dilakukan seperti mendeklarasikan variabel biasa, tetapi dengan menambahkan tanda asterik (*) sebelum nama variabel.

Contoh :int *a;float *x;..dsb.

Perbedaan pointer dengan variable biasa

Pointer Variabel biasa (bukan pointer)Deklarasi variabel int *a; int b;Alamat memori Tidak otomatis OtomatisMengetahui alamat memori a &bMengetahui datanya *a b

Page 36: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

35

Perhatikan pernyataan berikut,

int b;

b=5;

instruksi diatas benar, karena pada saat b dideklarasikan, otomatis akan dialokasikan space

di memori.

Perhatikan pula pernyataan berikut,

int *a;

*a=7

instruksi diatas tidak diperbolehkan, karena pointer tidak otomatis disediakan space di

memori, maka kita tidak bisa langsung menggunakannya untuk menyimpan data.

Sehingga, sebelum pointer tersebut digunakan untuk menyimpan data harus dicarikan

dahulu space di memori.

Ada dua cara yang dapat dilakukan untuk alokasi space di memori bagi pointer, yaitu:1. Menempati space variable lain yang sudah punya space.2. Dialokasikan tersendiri.

Menempati space variabel lain.Variabel lain tersebut dapat berupa variabel biasa (bukan pointer) atau pointer yang tentunya sudah punya alokasi space di memori. Syntaxnya :

var_pointer = &var_biasa;

Contoh 2:#include <iostream.h>#include <conio.h>

main() { int x,*y; y=&x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<*y; getch();}

Karena *y menempati alokasi memori yang sama dengan x, akibatnya data yang tersimpan di dalamnyapun akan sama. Jika ada instruksi yang menginisialisasi x, otomatis juga akan menginisialisasi *y.

Page 37: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

36

Contoh 3 :#include <iostream.h>#include <conio.h>

main() { int x,*y; y=&x; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}

Demikian juga, jika ada instruksi yang menginisialisasi *y, maka akan otomatis pula menginisialisasi nilai x. Coba anda pikirkan output dua contoh program berikut ini :

Contoh 4:#include <iostream.h>#include <conio.h>

main (){ int n1,n2; int *p; p=&n1; *p=10; p=&n2; *p=20; cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p = "<<*p; getch();}

Contoh 5:#include <iostream.h>#include <conio.h>

main (){ int n1=5,n2=15; int *p1, *p2; p1 = &n1; p2 = &n2; *p1 = 10; *p2 = *p1; p1 = p2; *p1 = 20;

Page 38: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

37

cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p1 = "<<*p1; cout<<"\nNilai p2 = "<<*p2; getch();}

Alokasi space tersendiri di memori (Memori dinamis).Pointer tidak menempati space variabel lain, tetapi dialokasikan space tersendiri di memori dengan instruksi new.Syntaxnya:var_ponter = new tipe_data-pointernya;

Contoh :int *a;float *x;a=new int;x=new float;

Perhatikan Contoh 6 yang dimodifikasi dari Contoh 3 sebelumnya.

Contoh 6:#include <iostream.h>#include <conio.h>

main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}

x dan y mempunyai alokasi memori yang berbeda, sehingga data yang tersimpan di dalamnyapun akan berbeda pula.

Membebaskan memori dari variabel dinamisDengan alokasi memori dinamis ini kita dapat menghemat alokasi memori dengan cara membebaskan memori dari variabel dinamis, jika memang variabel tersebut tidak digunakan lagi.Syntaxnya:delete var_pointer;

Page 39: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

38

Contoh 7:#include <iostream.h>#include <conio.h>

main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; delete y; cout<<"\n\nSetelah di delete"; cout<<"\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}

Perhatikan Contoh 7 diatas. Setelah dikenai instruksi delete y; maka nilai yang tersimpan

dalam *y akan hilang. Itulah sebabnya *y dikatakan sebagai variable dinamis, sedangkan x

merupakan variable statis, sehingga tidak bisa dibebaskan dari memori.

Page 40: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

39

MATERI VPOINTER DAN MEMORI DINAMIS

Kompetensi:Mampu memahami konsep pointer beserta penggunaanya

Indikator:1. Mampu mendeklarasikan pointer.2. Mampu menggunakan pointer dalam program

Operator Reference (&)Digunakan untuk mengetahui alamat memori yang ditempat oleh suatu variabel.

Contoh 1#include <iostream.h>#include <conio.h>

main() { int x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; getch();}

Program diatas akan menampilkan nilai variabel x, dan memori yang ditempati oleh x.

Mendeklarasikan tipe pointer.

Dapat dilakukan seperti mendeklarasikan variabel biasa, tetapi dengan menambahkan

tanda asterik (*) sebelum nama variabel.

Contoh :int *a;float *x;..dsb.

Perbedaan pointer dengan variable biasa

Pointer Variabel biasa (bukan pointer)Deklarasi variabel int *a; int b;Alamat memori Tidak otomatis OtomatisMengetahui alamat memori a &bMengetahui datanya *a b

Page 41: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

40

Perhatikan pernyataan berikut,int b;b=5;

instruksi diatas benar, karena pada saat b dideklarasikan, otomatis akan dialokasikan space di memori.

Perhatikan pula pernyataan berikut,int *a;*a=7

instruksi diatas tidak diperbolehkan, karena pointer tidak otomatis disediakan space di

memori, maka kita tidak bisa langsung menggunakannya untuk menyimpan data.

Sehingga, sebelum pointer tersebut digunakan untuk menyimpan data harus dicarikan

dahulu space di memori.

Ada dua cara yang dapat dilakukan untuk alokasi space di memori bagi pointer, yaitu:1. Menempati space variable lain yang sudah punya space.2. Dialokasikan tersendiri.

Menempati space variabel lain.

Variabel lain tersebut dapat berupa variabel biasa (bukan pointer) atau pointer yang

tentunya sudah punya alokasi space di memori.

Syntaxnya :

var_pointer = &var_biasa;

Contoh 2:#include <iostream.h>#include <conio.h>

main() { int x,*y; y=&x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<*y; getch();}

Karena *y menempati alokasi memori yang sama dengan x, akibatnya data yang tersimpan

di dalamnyapun akan sama. Jika ada instruksi yang menginisialisasi x, otomatis juga akan

menginisialisasi *y.

Page 42: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

41

Contoh 3 :#include <iostream.h>#include <conio.h>

main() { int x,*y; y=&x; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}

Demikian juga, jika ada instruksi yang menginisialisasi *y, maka akan otomatis pula

menginisialisasi nilai x.

Coba anda pikirkan output dua contoh program berikut ini :

Contoh 4:#include <iostream.h>#include <conio.h>

main (){ int n1,n2; int *p; p=&n1; *p=10; p=&n2; *p=20; cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p = "<<*p; getch();}

Page 43: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

42

Contoh 5:#include <iostream.h>#include <conio.h>

main (){ int n1=5,n2=15; int *p1, *p2; p1 = &n1; p2 = &n2; *p1 = 10; *p2 = *p1; p1 = p2; *p1 = 20; cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p1 = "<<*p1; cout<<"\nNilai p2 = "<<*p2; getch();}

Alokasi space tersendiri di memori (Memori dinamis).

Pointer tidak menempati space variabel lain, tetapi dialokasikan space tersendiri di memori

dengan instruksi new.

Syntaxnya:

var_ponter = new tipe_data-pointernya;

Contoh :int *a;float *x;a=new int;x=new float;

Perhatikan Contoh 6 yang dimodifikasi dari Contoh 3 sebelumnya.

Contoh 6:#include <iostream.h>#include <conio.h>

main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y;

Page 44: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

43

getch();}

x dan y mempunyai alokasi memori yang berbeda, sehingga data yang tersimpan di dalamnyapun akan berbeda pula.

Membebaskan memori dari variabel dinamis

Dengan alokasi memori dinamis ini kita dapat menghemat alokasi memori dengan cara

membebaskan memori dari variabel dinamis, jika memang variabel tersebut tidak

digunakan lagi.

Syntaxnya:

delete var_pointer;

Contoh 7:#include <iostream.h>#include <conio.h>

main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; delete y; cout<<"\n\nSetelah di delete"; cout<<"\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y;

getch();}

Perhatikan Contoh 7 diatas. Setelah dikenai instruksi delete y; maka nilai yang tersimpan

dalam *y akan hilang. Itulah sebabnya *y dikatakan sebagai variable dinamis, sedangkan x

merupakan variable statis, sehingga tidak bisa dibebaskan dari memori.

Page 45: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

44

MATERI VPOINTER DAN MEMORI DINAMIS

Kompetensi:Mampu memahami konsep pointer beserta penggunaanya

Indikator:1. Mampu mendeklarasikan pointer.2. Mampu menggunakan pointer dalam program

Operator Reference (&)Digunakan untuk mengetahui alamat memori yang ditempat oleh suatu variabel.

Contoh 1#include <iostream.h>#include <conio.h>

main() { int x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; getch();}

Program diatas akan menampilkan nilai variabel x, dan memori yang ditempati oleh x.

Mendeklarasikan tipe pointer.Dapat dilakukan seperti mendeklarasikan variabel biasa, tetapi dengan menambahkan tanda asterik (*) sebelum nama variabel.

Contoh :int *a;float *x;..dsb.

Perbedaan pointer dengan variable biasa

Pointer Variabel biasa (bukan pointer)Deklarasi variabel int *a; int b;Alamat memori Tidak otomatis OtomatisMengetahui alamat memori a &bMengetahui datanya *a b

Page 46: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

45

Perhatikan pernyataan berikut,

int b;

b=5;

instruksi diatas benar, karena pada saat b dideklarasikan, otomatis akan dialokasikan space

di memori.

Perhatikan pula pernyataan berikut,

int *a;

*a=7

instruksi diatas tidak diperbolehkan, karena pointer tidak otomatis disediakan space di

memori, maka kita tidak bisa langsung menggunakannya untuk menyimpan data.

Sehingga, sebelum pointer tersebut digunakan untuk menyimpan data harus dicarikan

dahulu space di memori.

Ada dua cara yang dapat dilakukan untuk alokasi space di memori bagi pointer, yaitu:1. Menempati space variable lain yang sudah punya space.2. Dialokasikan tersendiri.

Menempati space variabel lain.

Variabel lain tersebut dapat berupa variabel biasa (bukan pointer) atau pointer yang

tentunya sudah punya alokasi space di memori.

Syntaxnya :

var_pointer = &var_biasa;

Contoh 2:#include <iostream.h>#include <conio.h>

main() { int x,*y; y=&x; x=5; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<*y; getch();}

Page 47: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

46

Karena *y menempati alokasi memori yang sama dengan x, akibatnya data yang tersimpan

di dalamnyapun akan sama. Jika ada instruksi yang menginisialisasi x, otomatis juga akan

menginisialisasi *y.

Contoh 3 :#include <iostream.h>#include <conio.h>

main() { int x,*y; y=&x; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}

Demikian juga, jika ada instruksi yang menginisialisasi *y, maka akan otomatis pula menginisialisasi nilai x.Coba anda pikirkan output dua contoh program berikut ini :

Contoh 4:#include <iostream.h>#include <conio.h>

main (){ int n1,n2; int *p; p=&n1; *p=10; p=&n2; *p=20; cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p = "<<*p; getch();}

Page 48: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

47

Contoh 5:#include <iostream.h>#include <conio.h>

main (){ int n1=5,n2=15; int *p1, *p2; p1 = &n1; p2 = &n2;

*p1 = 10; *p2 = *p1; p1 = p2; *p1 = 20; cout<<"Nilai n1 = "<<n1; cout<<"\nNilai n2 = "<<n2; cout<<"\nNilai p1 = "<<*p1; cout<<"\nNilai p2 = "<<*p2; getch();}

Alokasi space tersendiri di memori (Memori dinamis).

Pointer tidak menempati space variabel lain, tetapi dialokasikan space tersendiri di memori

dengan instruksi new.

Syntaxnya:

var_ponter = new tipe_data-pointernya;

Contoh :int *a;float *x;a=new int;x=new float;

Perhatikan Contoh 6 yang dimodifikasi dari Contoh 3 sebelumnya.Contoh 6:#include <iostream.h>#include <conio.h>

main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}

Page 49: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

48

x dan y mempunyai alokasi memori yang berbeda, sehingga data yang tersimpan di dalamnyapun akan berbeda pula.

Membebaskan memori dari variabel dinamisDengan alokasi memori dinamis ini kita dapat menghemat alokasi memori dengan cara membebaskan memori dari variabel dinamis, jika memang variabel tersebut tidak digunakan lagi.Syntaxnya:delete var_pointer;

Contoh 7:#include <iostream.h>#include <conio.h>

main() { int x,*y; y=new int; x=5; *y=10; cout<<"Nilai x = "<<x; cout<<"\nAlamat memori yang ditempati x = "<<&x; cout<<"\n\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; delete y; cout<<"\n\nSetelah di delete"; cout<<"\nNilai y = "<<*y; cout<<"\nAlamat memori yang ditempati y = "<<y; getch();}

Perhatikan Contoh 7 diatas. Setelah dikenai instruksi delete y; maka nilai yang tersimpan

dalam *y akan hilang. Itulah sebabnya *y dikatakan sebagai variable dinamis, sedangkan x

merupakan variable statis, sehingga tidak bisa dibebaskan dari memori.

Page 50: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

49

MATERI VIFUNGSI

Kompetensi dasar:

Mampu membuat fungsi dalam pemecahan masalah.

Indikator kompetensi:

1. Memahami perlunya fungsi

2. Mampu memilih kapan menggunakan tipe fungsi tertentu

3. Mampu mendeklarasikan fungsi

4. Mampu membedakan variabel lokal dan global

5. Mampu melakukan pemanggilan fungsi dari fungsi lain

6. Mampu membuat aplikasi lengkap yang mengandung fungsi berbagai tipe berikut

pemanggilannya di fungsi lainnya

Perlunya FungsiJika kita dihadapkan oleh suatu permasalahan yang besar, untuk mempermudah pemecahannya, maka akan lebih baik jika dibagi-bagi menjadi sub permasalahan yang lebih kecil.Inilah yang merupakan konsep dari pemrograman terstruktur.

FungsiDeklarasi fungsi:

tipe_fungsi nama_fungsi(parameter_formal){ instruksi dan deklarasi var lokal}

BIG PROBLEM

subproblem subproblemsubproblem subproblem. . . . . . . . .

Page 51: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

50

Ada 2 tipe fungsi :1. void

Fungsi tanpa return value.2. bukan void (int, float, char dll …..)

Fungsi dengan return value.

Nama fungsi dapat dipilih sembarang, tetapi tetap mempertimbangkan syarat sebagaimana jika kita memilih identifier.

Petunjuk membuat fungsi:1. Agar lebih mudah anggap bahwa membuat fungsi sama dengan membuat

program.2. Tentukan variable input dan variable outputnya.3. Jika jumlah variable output sama dengan satu maka

kita bisa buat dalam fungsi yang tipenya void maupun bukan void.else

tipe fungsi harus void

Fungsi tipenya bukan void :

a. tipe fungsi sama dengan tipe output

b. parameter formal (parameter value) fungsi adalah variable inputnya.

c. Instruksi fungsi = instruksi program dengan menghilangkan instruksi untuk

menginputkan data pada variable input, dan instruksi untuk menampilkan hasil dari

variable output.

d. Cek kembali apakah masih ada variable yang belum dideklarasikan. Jika ada, maka

deklarasikan sebagai variable local.

e. Diakhiri dengan instruksi :

return var_output;

Fungsi yang tipenya void:

a. tipe fungsinya void

b. Parameter formal fungsi ada dua macam:

parameter value, adalah variable inputnya.

Parameter reference/address, adalah variable outputnya

c. Instruksi fungsi = instruksi program dengan menghilangkan instruksi untuk

menginputkan data pada variable input, dan instruksi untuk menampilkan hasil dari

variable output.

Page 52: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

51

Pemanggilan fungsi:1. Fungsi yang tipenya void

nama_fungsi(parameter_aktual);

2. Fungsi yang tipenya bukan voidnama_var = nama_fungsi(parameter_aktual);nama_var harus dideklarasikan dulu, tipenya harus sama dengan tipe output fungsi

Cotoh:a. Fungsi mencari luas persegi panjang.

Input : p, l intOutput: ls int

Karena outputnya ada 1 variabel maka dapat dibuat fungsi dengan return value maupun tanpa return value.

Fungsi dengan return value (tipenya = tipe output = int)

Contoh 1:#include <iostream.h>#include <conio.h>

int luas(int p, int l){ int ls; ls = p*l; return ls; }

main(){ int pj,lb,hsl; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; hsl=luas(pj,lb); cout<<"\nLuasnya = "<<hsl; getch();}

Program diatas dapat juga dituliskan seperti berikut:

Contoh 2:#include <iostream.h>#include <conio.h>

int luas(int p, int l){return (p*l); }

main(){ int pj,lb; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; cout<<"\nLuasnya = "<<luas(pj,lb); getch();}

Page 53: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

52

Fungsi tanpa return value (tipenya void)

Contoh 3:#include <iostream.h>#include <conio.h>

void luas(int &ls, int p, int l){ ls = p*l; }

main(){ int pj,lb, hsl; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; luas(hsl,pj,lb); cout<<"\nLuasnya = "<<hsl; getch();}

b. Fungsi mencari luas dan keliling persegi panjang (dalam satu fungsi).Input : p, l intOutput: ls,kl int

Karena outputnya ada 2 variabel maka hanya dapat dibuat fungsi tanpa return value, tipenya void, sebagai berikut:

Contoh 4:#include <iostream.h>#include <conio.h>

void luas(int &ls, int &kl, int p, int l){ ls = p*l; kl = 2*(p+l); }

main(){ int pj,lb, hsl1,hsl2; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; luas(hsl1,hsl2,pj,lb); cout<<"\nLuasnya = "<<hsl1; cout<<"\nKelilingnya = "<<hsl2; getch();}

c. Fungsi menampilkan tulisan dilayar.Input : tdk adaOutput: tdk ada

Karena outputnya tdk ada maka hanya dapat dibuat fungsi tanpa return value, tipenya void.Misalnya fungsi tersebut dimasukkan ke dalam contoh program 4, maka menjadi sebagai berikut:

Page 54: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

53

Contoh 5:#include <iostream.h>#include <conio.h>

void luas(int &ls, int &kl, int p, int l){ ls = p*l; kl = 2*(p+l); }

void cetak(){cout<<"MENCARI LUAS DAN KELILING PERSEGI PANJANG\n\n";}

main(){ cetak(); int pj,lb, hsl1,hsl2; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; luas(hsl1,hsl2,pj,lb); cout<<"\nLuasnya = "<<hsl1; cout<<"\nKelilingnya = "<<hsl2; getch();}

Letak fungsi:1. Dapat diletakkan sebelum main()2. Dapat juga diletakkan setelah main(). Namun jika fungsi diletakkan setelah main,

sebelum main harus dituliskan prototype fungsinya.

Contoh 6:#include <iostream.h>#include <conio.h>

void luas(int &ls, int &kl, int p, int l);void cetak();

main(){ cetak(); int pj,lb, hsl1,hsl2; cout<<"Panjang = ";cin>>pj; cout<<"Lebar = ";cin>>lb; luas(hsl1,hsl2,pj,lb); cout<<"\nLuasnya = "<<hsl1; cout<<"\nKelilingnya = "<<hsl2; getch();}

void luas(int &ls, int &kl, int p, int l){ ls = p*l; kl = 2*(p+l); }

Page 55: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

54

void cetak(){cout<<"MENCARI LUAS DAN KELILING PERSEGI PANJANG\n\n";}

Variabel local dan global

Variabel global dapat diakses oleh semua fungsi dalam program. Variabel global sangat

berbahaya karena secara tidak sengaja dapat termodifikasi oleh instruksi-instruksi dalam

programnya sehingga pemakaian variabel global ini harus seminimal mungkin.

Deklarasinya adalah sebelum deklarasi fungsi.

Sedangkan variabel lokal hanya dapat diakses oleh fungsi dimana variabel lokal tersebut

didefinisikan sehingga scope dari variabel lokal tersebut teriindungi. Variabel lokal tidak

dapat diubah atau bahkan dihapus oleh fungsi-fungsi yang lain.

Deklarasinya adalah di dalam fungsi yang menggunakannya.

#include <iostream.h>#include <conio.h>int a; ini adalah variable global

main() { int b; ini adalah variable lokal

}

Contoh 7:#include <iostream.h>#include <conio.h>int i=5;

void fungsi(){ i+=2; cout<<"\nNilai i dari fungsi = "<<i;}

main() { i+=3; cout<<"\nNilai i dari main = "<<i; fungsi(); getch();}

Page 56: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

55

Pada contoh 7, i adalah variabel global, sehingga akan dikenali di semua bagian program.

Akibatnya jika ada pernyataan yang mengubah nilai i maka tentunya nilainya akan

menyesuaikan.

Variabel static dan dynamic

Istilah automatik dan statik menjelaskan apa yang terjadi pada suatu variabel lokal dalam

suatu fungsi sesaat setelah fungsi ini selesai dipanggil dan eksekusi program kembali ke

prosedur yang memanggil.

Default dari variabel lokal dalam suatu fungsi adalah automatik artinya variabel lokal

tersebut dihapus pada saat fungsi selesai dipanggil.

Untuk mendefinisikan suatu variabel automatik, tambahkan awalan auto pada deflnisi

variabel tersebut.

Karena default dari variabel lokal adalah automatik maka awalan auto ini optional, jadi

boleh dihilangkan

Kebalikan dari variabel automatik adalah variabel statik yaitu tidak dihapus pada saat

fungsi berakhir. Semua variabel global adalah statik.

Variabel lokal yang sifatnya automatic dapat diubah menjadi static. Untuk membuat suatu

variabel lokal statik, tambahkan awalan static pada definisi variabel lokal tersebut.

Variabel lokal statik tidak kehilangan nilainya pada saat fungsi berakhir dan tetap lokal

dalam fungsi tersebut. Jika fungsi yang mengandung variabel lokal statik ini dipanggil lagi

maka nilai variabel ini masih ada.

Untuk pemahaman konsep diatas, bandingkan output dari Contoh 8 dan Contoh 9 berikut

ini.

Contoh 8:#include <iostream.h>#include <conio.h>

void fungsi(){ int j=7; j+=2; cout<<"\nNilai j dari fungsi = "<<j;}

main() { fungsi(); fungsi(); getch();}

Page 57: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

56

Contoh 9:#include <iostream.h>#include <conio.h>

void fungsi(){ static int j=7; j+=2; cout<<"\nNilai j dari fungsi = "<<j;}

main() { fungsi(); fungsi(); getch();}

Page 58: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

57

MATERI VIIARRAY

Kompetensi dasar:Mampu menggunakan tipe array untuk pemecahan masalah.

Indikator kompetensi:1. Memahami perlunya array2. Mampu menentukan kapan harus menggunakan array.3. Mampu mendeklarasikan array4. Mampu membuat aplikasi lengkap yang mengandung array, dan menggunakan

fungsi yang menggunakan parameter array.

ARRAYDigunakan untuk menyimpan sekelompok data yang tipenya sama.

Deklarasi Array 1 Dimensitipe nama_var[max_data];

Contoh:int a[5];float x[100];char nama[25];.dst.

Cara mengakses data bertipe array nama_variabel[alamat]

Misal : Array a

27 23 35 46 87 data yang tersimpan di array0 1 2 3 4 alamat array (dimulai dari 0)

a[0] = 27a[1] = 23..a[4] = 87

Menginputkan data ke array

Data dapat diinputkan untuk setiap emelen array. Tetapi jika jumlah elemen array banayk,

tentunya cara ini tidak efisien. Oleh karena itu dapat digunakan bantuan instruksi

perulangan untuk input datanya.

Page 59: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

58

Contoh 1:#include <iostream.h>#include <conio.h>

main() { int a[5]; cout<<"Data ke 0 = ";cin>>a[0]; cout<<"Data ke 1 = ";cin>>a[1]; cout<<"Data ke 2 = ";cin>>a[2]; cout<<"Data ke 3 = ";cin>>a[3]; cout<<"Data ke 4 = ";cin>>a[4]; int jumlah; jumlah=a[0]+a[1]+a[2]+a[3]+a[4]; cout<<"\n\nJumlahnya = "<<jumlah; getch();}

Contoh 2:#include <iostream.h>#include <conio.h>

main() { int a[5]; int jumlah=0; for(int i=0;i<5;i++) { cout<<"Data ke "<<i<<" = ";cin>>a[i]; jumlah+=a[i]; } cout<<"\n\nJumlahnya = "<<jumlah; getch();}

Tipe array juga dapat digabungkan dengan pointer. Untuk itu kita akan melakukan perubahan pada contoh 3 menjadi sebagai berikut:

Contoh 3:#include <iostream.h>#include <conio.h>

main() { int *a=new int[5]; int jumlah=0; for(int i=0;i<5;i++) { cout<<"Data ke "<<i<<" = ";cin>>a[i]; jumlah+=a[i]; } cout<<"\n\nJumlahnya = "<<jumlah; getch();}

Page 60: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

59

Perhatikan contoh 3 diatas pada pengaksesan datanya. Jika array dideklarasikan sebagai

pointer, maka untuk pengaksesan datanya cukup dituliskan sebagai array. Tetapi kita tetap

bisa menuliskannya sebagai pointer tanpa harus menyertakan alamat arraynya. Jika

demikian maka data akan diambilkan dari data pertama, atau data pada alamat ke 0.

Sehingga misalkan pada akhir program contoh 3 diatas kita tambahkan instruksi :

cout<<"\nData = "<<*a;

atau instuksi :

cout<<"\nData = "<<a[0];

akan mempunyai arti yang sama, data akan diambil dari data pertama (alamat 0).

Selain itu untuk input data dan proses penjumlahan, dapat juga dibuat dalam bentuk fungsi

seperti pada contoh 4. Perhatikan pada saat tipe array menjadi parameter fungsi, jumlah

data yang tersimpan dalam array boleh ditulis boleh tidak (optional). Sehingga bisa ditulis

dengan : b[] saja

Contoh 4 :#include <iostream.h>#include <conio.h>

void input_array(int b[],int n){ for(int i=0;i<n;i++) { cout<<"Data ke "<<i<<" = ";cin>>b[i]; }}

int jumlah(int b[],int n){ int hasil=0; for(int i=0;i<n;i++) hasil+=b[i]; return hasil;}

main() { int a[100]; int bd; cout<<"Masukkan banyaknya data = ";cin>>bd; input_array(a,bd); cout<<"\n\nJumlahnya = "<<jumlah(a,bd); getch();}

Page 61: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

60

Penggunaan array 1D untuk sorting data

Pada proses berikut ingin akan diurutkan n data yang tersimpan di array dengan metode

Bubble Sort.

Contoh 5:#include <iostream.h>#include <conio.h>

void masukan(int a[],int n){ for(int i=0;i<n;i++) { cout<<"Data ke "<<i<<" = ";

cin>>a[i]; }

}

void urutkan(int a[], int n){ int temp; for(int i=0;i<n;i++) for(int j=0;j<(n-i);j++) if (a[j]>a[j+1])

{ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }

}

void tampil(int a[], int n){ for(int i=0;i<n;i++)

cout<<a[i]<<" "; }

main() { int a[100]; int jml; cout<<"Banyak data = ";cin>>jml; masukan(a,jml); urutkan(a,jml); cout<<"\n\nSetelah diurutkan "; tampil(a,jml); getch();

}

Page 62: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

61

Pada contoh program diatas ada tiga fungsi, fungsi pertama digunakan untuk

menginputkan data ke dalam array, fungsi kedua untuk mengurutkan arraynya, dan fungsi

ketiga untuk menampilkan data yang tersimpan di array ke layar.

Array 2 DimensiContoh deklarasi :int a[4][5];

0 1 2 30 25 40 26 121 6 8 12 52 1 3 8 93 15 22 13 194 0 5 7 15

Mengakses data :

a[0][0] = 25a[0][1] = 40..dst

Penggunaan array 2D untuk menjumlahkan dua matrik

Matrik asal adalah a dan b, dijumlahkan dan hasilnya disimpan di matrik c. Syarat agar

matrik dapat dijumlahkan adalah keduanya mempunyai ukuran yang sama.

Baris matrik 1 = Baris matrik 2

Kolom matrik 1 = Kolom matrik 2

Contoh 6:#include <iostream.h>#include <conio.h>

void masukan(int a[10][10],int b,int k){ for(int i=0;i<b;i++) for(int j=0;j<k;j++) {cout<<"Data ke "<<i<<j<<" = ";cin>>a[i][j]; }}

void jumlah(int a1[][10],int a2[][10],int a3[][10],int b1,int k1){ for(int i=0;i<b1;i++) for(int j=0;j<k1;j++) a3[i][j]=a1[i][j]+a2[i][j];}

void tampilkan(int a[10][10],int b,int k)

Page 63: MODUL PEMOGRAMAN TERSTRUKTUR DENGAN C · Lingkup Materi Pemrograman Terstruktur : 1. Komsep Pemrograman Terstruktur. Jenis-jenis bahasa pemrograman, Proses penyelesaian masalah Struktur

62

{ for(int i=0;i<b;i++) { for(int j=0;j<k;j++) cout<<a[i][j]<<" "; cout<<"\n"; }}

main() { int dt1[10][10],dt2[10][10],dt3[10][10];int b1,k1;

cout<<"Jumlah baris matrik = ";cin>>b1; cout<<"Jumlah kolom matrik = ";cin>>k1; cout<<"\nMatrik pertama\n"; masukan(dt1,b1,k1); cout<<"\nMatrik kedua\n"; masukan(dt2,b1,k1); jumlah(dt1,dt2,dt3,b1,k1);clrscr();

cout<<"\nMatrik pertama\n"; tampilkan(dt1,b1,k1); cout<<"\nMatrik kedua\n"; tampilkan(dt2,b1,k1); cout<<"\nMatrik hasil penjumlahan\n"; tampilkan(dt3,b1,k1); getch();}

Perhatikan pada saat array 2D menjadi parameter fungsi, jumlah baris boleh ditulis boleh

tidak, tetapi jumlah kolom harus ditulis.

Tipe array dapat dikembangkan menjadi array multidimensi. Misal 3D, 4D, dan

sebagainya.