1 ADP Algoritma

365
dasar-dasar algoritma

Transcript of 1 ADP Algoritma

dasar-dasar algoritma

Pada dasarnya komputer adalah mesin yangtidak dapat melakukan apa-apa, sehinggadiperlukan serangkaian instruksi yangdiberikan kepada komputer untuk dapatbekerja dan memecahkan suatu masalah.

Langkah-langkah yang dilakukan dalammemberikan instruksi kepada komputeruntuk memecahkan masalah disebut jugaPemrograman Komputer.

Program adalah kumpulan instruksi yangdigunakan untuk mengatur komputer agarmelakukan suatu tindakan tertentu.

Definisi lain Program yaitu kata, ekspresi,pernyataan atau kombinasinya / kumpulanstatement-statement yang dirangkai dan disusunmenjadi satu kesatuan prosedur yang berupaurutan langkah-langkah logis penyelesaianmasalah yang diimplementasi kan denganpenggunaan bahasa pemrograman sehinggadapat dieksekusi oleh komputer dan dilihat hasilakhirnya.

Pada dasarnya komputer mencakup 3aspek penting, berupa PerangkatKeras (hardware), Perangkat Lunak(software) berupa program, sertaPerangkat Akal (brainware) atau orangyang berperan dalam operasikomputer maupun pengembanganPerangkat Lunak.

Dalam Pemrograman Komputer, untukmemberikan suatu instruksi harus digunakanbahasa yang dimengerti oleh komputer tersebut,yang disebut juga Bahasa Komputer. Denganbahasa ini, komputer akan mampu memahamidan mengerti perintah-perintah yang diberikan.Bahasa Komputer biasa juga disebut denganBahasa Pemrograman Komputer, yaitu suatuprosedur atau tata cara penulisan program, yangdalam hal ini adalah kata, ekspresi, pernyataanatau kombinasi semuanya yang disusun dandirangkai berupa urutan langkah-langkahpenyelesaian masalah.

Bahasa Pemrograman Komputersecara garis besar dapatdikelompokkan menjadi 2:

1. Bahasa Beraras Rendah (Low LevelLanguage)

2. Bahasa Beraras Tinggi (High LevelLanguage)

Komputer adalah mesin digital yang hanyadapat mengenal kondisi ada arus listrik (biasadilambangkan dengan 1) atau tidak ada aruslistrik (biasa dilambangkan dengan 0)

Dengan kata lain, harus digunakan sandi 0atau 1 untuk melakukan pemrogramankomputer. Bahasa Pemrograman yangmenggunakan sandi 1 atau 0 ini disebutdengan Bahasa Mesin.

Bahasa Mesin sangat susah untuk dimengerti,maka kemudian muncul ide untukmelambangkan untaian sandi 0 dan 1 dengansingkatan kata yang lebih mudah dipahamioleh manusia. Singkatan kata ini kemudiandisebut Mnemonic Code.

Bahasa Pemrograman yang menggunakansingkatan kata (Mnemonic Code) ini disebutdengan Bahasa Assembly.

Contohnya, dalam prosesor Intel terdapatperintah 0011 1010 0000 1011. Perintah inisama artinya dengan perintah assembly CMP AL,0D, yang artinya bandingkan nilai register ALdengan 0D. CMP adalah singkatan dari CoMPare.

Perangkat lunak yang mengkonversikanperintah-perintah assembly ke dalam bahasamesin sering disebut juga assembler.

Bahasa Mesin dan Bahasa Assembly termasuk kedalam Bahasa Beraras Rendah (Low LevelLanguage).

Pemrograman dengan bahasa assemblydirasakan masih terlalu sulit, sehinggakemudian dikembangkan bahasapemrograman yang lebih mudah digunakankarena menggunakan kata-kata yang mudahdikenali oleh manusia.

Bahasa Pemrograman seperti ini disebutBahasa Generasi Ketiga atau 3GL (ThirdGeneration Language).

Bahasa Generasi Ketiga biasa jugadisebut dengan bahasa tingkat tinggiatau HLL (high level language).

Contoh Bahasa Generasi Ketiga yaituBasic, Pascal, C, C++, COBOL danlain-lain.

Contoh perintah dalam bahas Pascal:

writeln (‘Algoritma’);

Contoh perintah dalam Bahasa C:

printf (“Algoritma\n\r”);

Contoh perintah dalam Bahasa C++:

cout << “Algoritma”<< endl;

Perangkat Lunak yang menerjemahkan programdalam bahasa yang dimengerti manusia ke dalamBahasa Assembly atau Mesin ada dua macam,yaitu:

1. Interpreter menerjemahkan program baris perbaris, jika suatu baris akan dieksekusi, makabaris tersebut diterjemahkan dulu ke BahasaMesin. Contoh: Basic

2. Kompiler menerjemahkan semua baris perintahke dalam bahasa mesin kemudian menjalankanhasil penerjemahannya. Contoh: Pascal, C, danC++

Pada Bahasa Pemrograman Komputer adabeberapa faktor yang harus diperhatikan:1. Sintaksis, yaitu tata bahasa yang digunakan

dalam program atau aturan-aturan yangmengatur tata cara penulisan kata, ekspresi,dan pernyataan.

2. Semantik adalah maksud yang dikandungdalam setiap pernyataan yang ada dalamprogram atau aturan-aturan untukmenyatakan suatu arti.

3. Kebenaran Logika berhubungan dengan benartidaknya urutan pernyataan yang ada dalamprogram

Kesalahan sintaksis akan langsung kelihatan,karena komputer akan menampilkan pesankesalahan

Kesalahan semantik biasanya terjadi karenakekurang pahaman terhadap setiap pernyataanyang dituliskan pada program, sehinggawalaupun program bisa berjalan tetapi tidakseperti yang diharapkan.

Kesalahan logika merupakan kesalahan dalammengimplementasikan masalah yang dihadapi,sehingga program yang ditulis tidak benar secaralogika.

1. Mendefinisikan masalah.Tujuannya untuk memahamipermasalahan secara mendalamberkaitan dengan input, perintahyang digunakan dan bagaimanabentuk ouputnya.

2. Menentukan solusi. Jika masalahnya terlalubesar, dapat dibagi menjadi beberapa modulyang dapat memudahkan penyelesaianmasalahContoh:Program untuk menghitung luas dan kelilingpersegi panjang inputnya adalah panjangdan lebar, prosesnya dengan rumus luas =panjang * lebar dan keliling = 2*(panjang+lebar), serta output yangdiharapkan adalah luas dan keliling.

3. Memilih Algoritma. Algoritma dibuat dengantujuan untuk menyelesaikan masalah. Algoritmatidak bisa sekali jadi, tetapi akan dikajiberulang-ulang sampai diperoleh algoritmayang tepat, benar, dan relevan.Contoh menghitung luas dan keliling persegipanjang dibuat algoritma yaitu:a. Tentukan variabel dan tipe data yang

digunakan.b. Masukkan input yaitu panjang dan lebar.c. Lakukan proses pencarian luas = panjang *

lebar, dan keliling = 2*(panjang+lebar)d. Tampilkan luas dan keliling persegi panjang

4. Menulis Program menggunakan suatu bahasa

pemrograman ke dalam komputer untukmemecahkan masalah yang ada.

Di slide selanjutnya akan diperlihatkan contohProgram Menghitung Luas dan Keliling PersegiPanjang yang ditulis menggunakan Bahasa C.

/* -----------------------------------------------------------------------------------------------

Program ADP_1_langkah_pemrograman.cpp

Contoh Menulis Program Menghitung Luas dan Keliling Persegi Panjang

----------------------------------------------------------------------------------------------- */

#include <stdio.h>

#include <stdlib.h>

main()

{

int panjang, lebar, luas, keliling;

printf("Contoh Menulis Program");

printf(" sebagai Langkah-langkah Pemrograman Komputer\n");

printf("______________________");

printf("_________________________________________\n");

printf("\n");

printf("Masukkan panjang: ");scanf("%d",&panjang);

printf("Masukkan lebar: ");scanf("%d",&lebar);

printf("\n");

luas = panjang * lebar;

keliling = 2 * (panjang+lebar);

printf("Jadi Luas Persegi Panjang adalah: %d\n",luas);

printf("Jadi Keliling Persegi Panjang adalah: %d\n",keliling);

printf("\n");

system("Pause");

}

• Hasil eksekusi program

5. Melakukan testing dan debugging. Testingmerupakan proses menjalankan programsecara rutin untuk menemukan kesalahan-kesalahan dalam penulisan suatu pernyataandalam program. Sedangkan debuggingadalah proses menemukan kesalahan-kesalahan dalam program dan kesalahanyang ditemukan diperbaiki sampai tidakmuncul kesalahan lagi

6. Menuliskan Dokumentasi. Dokumentasiyaitu catatan dari setiap langkah pekerjaandalam pembuatan program, yang dilakukandari awal sampai akhir. Dokumentasi sangatpenting untuk melakukan penelusuran jikaterjadi kesalahan dan penting untukpengembangan program. Dokumentasi jugaakan memberikan informasi yang cukupmemadai sehingga orang lain akan dapatmengerti dan memahami alur logikaprogram,

Dokumentasi biasanya berupa komentar-komentar pada tiap baris program. Hal yangperlu diperhatikan:

1.komentar jangan terlalu panjang

2.komentar harus jelas maksudnya

3.komentar diletakkan pada tempat yangtepat

4.keterangan yang harus ditulis harus logis

5. tidak menimbulkan salah pengertian

// -----------------------------------------------------------------------// Program ADP_2_menulis_dokumentasi_program.cpp// Contoh Menulis Dokumentasi Program// -----------------------------------------------------------------------

#include <stdio.h>#include <stdlib.h>main(){

//deklarasi variabel yang digunakanint jari;float luas, keliling;

//keterangan programprintf("Contoh Menulis Dokumentasi Program\n");printf("________________________________\n");printf("\n");//input variabel yang digunakan yaitu jariprintf("Masukkan jari-jari: "); scanf("%d",&jari);printf("\n");

//proses menghitung luas dan keliling lingkaranluas = 3.141593 * jari * jari;keliling = 2 * 3.141593 * jari;

//ouput luas dan keliling lingkaranprintf("Jadi luasnya adalah: %.2f\n",luas);printf("Jadi keliling adalah: %.2f\n",keliling);printf("\n");

system("Pause");}

• Hasil Eksekusi Program

Untuk komentar dalam bahasa C++menggunakan tanda /* dan diakhiri dengan*/, atau dengan tanda // di awal setiappernyataan

7. Melakukan Perawatan. Hal ini perludilakukan karena kemungkinan munculnyakesalahan di luar dugaan atau biasanyapengguna meminta fasilitas yang baru dalamprogram.

Dalam mengimplementasi urutan langkahpenyelesaian masalah harus menggunakan bentukdan rancang bangun yang mudah dipahami, tidakberbelit-belit, sederhana dan dapat dikembangkansiapa saja. Konsep ini dinamakan PemrogramanTerstruktur, dengan ciri-ciri berikut ini:1. Mempunyai teknik pemecahan permasalahan yang

tepat dan benar.2. Memiliki algoritma pemecahan masalah yang

sederhana dan efisien.3. Teknik penulisan program memiliki struktur logika

yang benar dan mudah dipahami.4. Membutuhkan biaya testing yang rendah.5. Memiliki dokumentasi yang baik.

Clarity, Simplicity dan Unity

Bahasa pemrograman harus dapat menolongprogrammer untuk membuat suatu desainprogram jauh sebelum programmermelakukan coding. Kemudahan,kesederhanaan dan kesatuan merupakansuatu kombinasi yang membantuprogrammer mengembangkan suatualgoritma sehingga algoritma yang dihasilkanmempunyai kompleksitas yang rendah.

Orthogonality

Orthogonality menunjuk kepada suatu atributyang dapat dikombinasikan dengan beragamfitur bahasa pemrograman sehingga setiapkombinasinya mempunyai arti dan dapatdigunakan

Kewajaran untuk aplikasi

Bahasa pemrograman membutuhkan syntaxyang tepat/cocok yang digunakan padastruktur program untuk merefleksikanstruktur logika yang melandasi suatualgoritma.

Mendukung Abstraksi

Abstraksi merupakan suatu hal yangsubstansial bagi programmer untuk membuatsuatu solusi dari masalah yang dihadapi.Kemudian abstraksi tersebut dapat denganmudah diimplementasikan menggunakanfitur-fitur yang ada dalam bahasapemrograman.

Kemudahan untuk Verifikasi Program

Verifikasi program merupakan hal pentingbagi sebuah program karena denganverifikasi yang mudah maka suatu programakan dengan mudah dibangun dandikembangkan.

Lingkungan Pemrograman

Bahasa pemrograman yang mempunyailingkungan pemrograman yang baik danlengkap akan memudahkan programmeruntuk mengimplementasikan abstraksi yangsudah disusunnya.

Portabilitas Program

Salah satu kriteria penting untuk proyekpemrograman adalah kemudahan programyang sudah jadi untuk dipindah-pindahkandari komputer yang digunakan untukmembuat dan mengembangkan ke komputerlain yang akan menggunakannya.

Pemrogram atau Programmer adalah orangyang menyusun atau membuat suatuprogram.

Ciri-ciri Pemerogram yang baik:

1. Mampu menyusun algoritma dengan baik

2. Menguasai bahasa dan teknik penulisanprogram dengan baik

3. Dapat bekerjasama dalam suatu tim

4. Dapat bekerja secara efisien dan tepatwaktu

Kata Algoritma diambil dari namailmuwan muslim yaitu Abu Ja’farMuhammad bin Musa Al-Khwarizmi(780 – 846 M) yang berasal dariUzbekistan, yang banyak menghasilkankarya dalam bidang matematika,disamping karya-karya dalam bidanglainnya seperti geografi dan musik.Al-Khwarizmi menyatakan bahwaalgoritma adalah suatu metode khususuntuk menyelesaikan suatu persoalan

Beberapa definisi Algoritma:1. Menurut Rinaldi Munir (2002), algoritma adalah

urutan langkah-langkah logis penyelesaian masalahyang disusun secara sistematis

2. Menurut Kamus Besar Bahasa Indonesia (1998),algoritma adalah urutan logis pengambilankeputusan untuk pemecahan masalah.

3. Menurut Team Gunadarma (1988), algoritma adalahsuatu himpunan hingga dari instruksi-instruksiyang secara jelas memperinci langkah-langkahproses pelaksanaan, dalam pemecahan suatumasalah tertentu, atau suatu kelas masalahtertentu, dengan dituntut pula bahwa himpunaninstruksi itu tersebut dapat dilaksanakan secaramekanik.

Contoh 1: algoritma dalam kehidupan sehari-hari (menulis surat):

1. Mempersiapkan kertas dan amplop.

2. Mempersiapkan alat tulis, seperti penaatau pensil

3. Mulai menulis

4. Memasukkan kertas ke dalam amplop

5. Pergi ke kantor pos untuk mengeposkansurat.

Contoh 2: algoritma untuk menghitung luaslingkaran. (Rumus luas lingkaran, L = πR2):

1. Masukkan R.

2. Pi 3.14

3. L Pi * R * R

4. Tulis L

Tanda pada baris kedua dan ketiga berartinilai di sebelah kanan diberikan pada operandi sebelah kiri.

Masalah Algoritma Terjemahkanke Dalam Bahasa Pemrograman Hasil/Solusi

Proses dari masalah hingga menjadi suatualgoritma disebut “Tahap PemecahanMasalah”

Sedangkan dari Algoritma hingga menjadiSolusi/Hasil disebut tahap TahapImplementasi. Hasil/Solusi yang dimaksudadalah suatu program yang merupakanimplementasi dari algoritma yang disusun.

1. Uraian Deskriptif, yaitu menggunakan bahasasehari-hari.

2. Pseudocode, yaitu kode yang mirip dengankode pemrograman sebenarnya seperti Pascalatau C.

3. Flowchart (Diagram Alir), yaitu gambar ataudiagram yang memperlihatkan urutan danhubungan antar proses beserta pernyataannya.Gambar ini dinyatakan secara simbol, dan tiapsimbol menggambarkan proses tertentu.Sedangkan antara proses digambarkan dengangaris penghubung.

Bagan-bagan yang mempunyaiarus yang menggambarkanlangkah-langkah penyelesaiansuatu masalah.

Merupakan salah satu carapenyajian dari suatu algoritma.

Ada 2 macam Flowchart :

– System Flowchart, yaitu urutan prosesdalam system dengan menunjukkan alatmedia input, output serta jenis mediapenyimpanan dalam proses pengolahandata.

– Program Flowchart, yaitu urutan instruksiyang digambarkan dengan simbol tertentuuntuk memecahkan masalah dalam suatuprogram.

Simbol – simbol yang digunakandalam flowchart, yaitu

- Flow Direction Symbols (Simbolpenghubung alur)

- Processing Symbols (Simbolproses).

- Input-output Symbols (Simbolinput-output)

Simbol – simbol flowchart

Simbol – simbol flowchart

Pembuatan flowchart- Sebuah flowchart diawali dari satu titik START dan

diakhiri dengan END.

- Hindari pengulangan proses yang tidak perlu danlogika yang berbelit sehingga jalannya prosesmenjadi singkat.

- Jalannya proses digambarkan dari atas ke bawahdan diberikan tanda panah untuk memperjelas.

- Masing – masing simbol sebaiknya menggunakansuatu kata yang mewakili suatu pekerjaan

- Jika flowchart terpotong yang dikarenakanketerbatasan tempat maka gunakan simbolpenghubung yang tepat.

Dalam pemrograman, algoritmadigunakan untuk tiga struktur dasar,yaitu:

1. Struktur Urut (sequence structure),

2. Struktur Keputusan (decisionstructure),

3. Struktur perulangan (loopingstructure).

1. Struktur Urut (sequence structure), terdiridari pernyataan atau beberapa pernyataanyang tidak mempunyai perulangan ataukeputusan di dalamnya.

Contoh: algoritma untuk menghitung luasdan volume suatu balok.

Rumus Luas Balok,

L = (2*p*l) + (2*p*t) + (2*l*t)

Rumus Volume Balok,

V = p*l*t

Algoritma dari permasalahan di atas adalah:

1. Masukkan panjang

2. Masukkan lebar

3. Masukkan tinggi

4. Luas = (2*p*l)+(2*p*t)+(2*l*t)

5. Volume = p*l*t

6. Tampilkan Luas

7. Tampilkan Volume

Keterangan dari algoritma di atas:

Pada baris pertama, kedua & ketiga diminta untuk memasukkaninput yang berkaitan dengan balok yaitu panjang, lebar dantinggi. Panjang balok disimpan pada variabel panjang, lebarbalok disimpan pada variabel lebar dan tinggi balok disimpanpada variabel tinggi.

Pada baris keempat dan kelima, diminta memasukkan rumusuntuk mencari luas dan volume balok, yaitu Luas =(2*panjang*lebar) + (2*panjang*tinggi) + (2*lebar*tinggi), danVolume = panjang*lebar*tinggi.

Luas balok disimpan pada variabel luas dan Volume balokdisimpan pada variabel volume. Baris keenam dan ketujuhmerupakan hasil dari proses input dan proses perhitungan darivariabel input yang dimasukkan dan nantinya akan ditampilkanLuas dan Volume balok.

Flowchart dari algoritma Struktur Urut di atas adalah:

Contoh memecahkan masalah dalam algoritma Struktur Urut.Program untuk menghitung luas dan volume suatu balok.

/* ----------------------------------------------------------------------Program ADP_3_struktur_dasar_algoritma_urut.cppContoh Struktur Dasar Algoritma---------------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>main(){

int panjang, lebar, tinggi, luas, volume;

printf("Contoh Struktur Dasar Algoritma Urut\n");printf("Menghitung Luas & Volume Balok\n");printf(“______________________________\n");printf("\n");

printf("Masukkan panjang: "); scanf("%d",&panjang);printf("Masukkan lebar: "); scanf("%d",&lebar);printf("Masukkan tinggi: "); scanf("%d",&tinggi);

luas=(2*panjang*lebar)+(2*panjang*tinggi)+(2*lebar*tinggi);volume=panjang*lebar*tinggi;

printf("Jadi Luasnya adalah: %d\n",luas);printf("Jadi Volumenya adalah: %d\n",volume);

system("Pause");}

• Hasil eksekusi program

2. Struktur Keputusan (decisionstructure), digunakan untukmemilih salah satu alternatifjawaban yang tepat dari pilihanyang ada. C++ menyediakandua perintah pengambilankeputusan yaitu perintah IF danSWITCH.

Contoh: algoritma untuk menghitungtotal pembayaran dari pembelianseorang pelanggan toko, denganketentuan apabila pembelian pelanggantersebut sama dengan atau melebihi100000, maka pelanggan tersebutmendapat discount 10%, jika tidakpelanggan tersebut hanya mendapatdiscount 5%.

Algoritma dari permasalahan tersebut adalah:

1. Masukkan pembelian

2. Jika pembelian >= 100000, discount =10% *pembelian

3. Total pembayaran = pembelian – discount

4. Jika pembelian < 100000, discount = 5% *pembelian

5. Total pembayaran = pembelian – discount

6. Tampilkan pembelian

7. Tampilkan discount

8. Tampilkan total pembayaran

Keterangan dari algoritma di atas:

Pada baris pertama, diminta untuk memasukkan input yangberkaitan dengan permasalahan di atas yaitu pembelian. Pembeliantersebut disimpan pada variabel beli.

Pada baris kedua, akan dilakukan pengujian dan pengecekanpembelian yang dimasukkan yaitu apabila pembelian pelanggantersebut sama dengan atau melebihi 100000 atau tidak.

Jika jawabannya ya, maka pelanggan tersebut mendapat discount10%, dan total pembayarannya = pembelian-dicount. Discountdisimpan dalam variabel disc dan total pembayaran disimpan dalamvariabel total. Kemudian ke baris keenam sampai kedelapan.

Jika jawabannya tidak, maka kerjakan baris keempat dan kelimayaitu discount hanya 5% dan total pembayaran = pembelian-discount.

Selanjutnya pada baris keenam sampai kedelapan, akan ditampilkandiscount dan total pembayaran.

Flowchart dari algoritma Struktur Keputusan di atas adalah:

// ------------------------------------------------------------------------------// Program ADP_4_struktur_dasar_algoritma_keputusan.cpp// Contoh Struktur Dasar Algoritma// ------------------------------------------------------------------------------

#include <stdio.h>#include <stdlib.h>main(){long int beli,disc,total;printf("Contoh Struktur Dasar Algoritma Keputusan\n")printf("Program untuk menghitung Pembelian");printf(" dengan discount\n");printf("___________________________________");printf("________________\n");printf("\n");printf("Masukkan nilai pembelian: Rp. "); scanf("%d",&beli);printf("\n");if (beli>=100000){disc=0.1*beli;total=beli-disc;}

else

{

disc=0.05*beli;

total=beli-disc;

}

printf("Jadi pembelian adalah Rp. %d\n",beli);

printf("dengan discount Rp. %d\n",disc);

printf("dan total pembayaran sebesar Rp. %d\n",total);

printf("\n");

system("Pause");

}

Contoh memecahkan masalah dalam algoritma Struktur Keputusan. Program untuk menghitung total pembayaran dari pembelian dengan discount

• Hasil eksekusi program

3. Struktur Perulangan (loopingstructure), digunakan untukmelakukan suatu proses secaraberulang-ulang, jika suatu kondisidipenuhi atau sebaliknya. Biasadipergunakan untuk mengulangproses pemasukan data,mengulang proses perhitungan,dan mengulang proses penampilanhasil pengolahan data.

Contoh: algoritma untuk menampilkanbilangan dari 10 sampai 1 secaramenurun, yaitu 10,9,8,7,6,5,4,3,2,1.

Algoritma dari permasalahan tersebut:1. Tentukan nilai awal, batas, dan

penurunan nilai2. Lakukan perulangan sampai batas

terpenuhi3. Tampilkan bilangan

Keterangan dari algoritma di atas:

Pada baris pertama, diminta untuk mendefinisikan variabelbilangan dalam hal ini disimpan dalam variabel n. Adapunnilai awal n adalah 10, batas dari bilangan adalah n>0.Karena yang akan ditampilkan bilangan secara menurun,maka bilangan awal dikurangi satu persatu. Dalam C++penulisannya adalah n--.

Pada baris kedua, proses perulangan dimulai, n dimulai dari10, karena 10>0, maka perulangan dilakukan serta prosespenurunan berjalan yaitu 10-1=9. Seterusnya, perulangandilakukan sampai n=0.

Apabila nilai n=0, maka proses perulangan dihentikan danlangkah selanjutnya akan turun ke baris ketiga yaitumenampilkan semua bilangan dalam perulangan tersebut.

Flowchart dari algoritma Struktur Perulangan di atas adalah:

Contoh memecahkan masalah dalam algoritma StrukturPerulangan.Program untuk menampilkan bilangan dari 10 sampai 1 secaramenurun

// -------------------------------------------------

// Program ADP_5_struktur_dasar_algoritma_perulangan.cpp

// Contoh Struktur Dasar Algoritma

// -------------------------------------------------

#include <stdio.h>

#include <stdlib.h>

main()

{

int n;

printf("Contoh Struktur Dasar Algoritma Perulangan\n");

printf("Program untuk menampilkan nilai 10 s.d. 1\n");

printf("__________________________________________\n");

printf("\n\t");

for (n=10; n>0; n--){

printf("%d\n\t",n);

}

printf("\n");

system ("Pause");

}

Sejauh ini tidak ada standarisasi tentangbagaimana menyusun algoritma. Secaraprinsip, setiap orang mempunyai kebebasanuntuk menyusun bentuk suatu algoritma. Tiaporang dapat menggunakan kata-kata dalambahasa manusia, pseudocode, atau bahkandiagram alir untuk mewujudkan suatualgoritma. Tiap orang juga dapat menggunakancara-caranya sendiri untuk menuliskan suatualgoritma dengan memegang teguhkonsistensi.

Namun demikian ada beberapa hal yang perlu diperhatikan dalammenyusun suatu algoritma.Menurut Knuth ( 1973, hal. 4) dan juga Horowitz (1999, hal. 1), ada limaciri-ciri penting yang harus dimiliki sebuah algoritma, yaitu:1. Finitness, menyatakan bahwa suatu algoritma harus berakhir untuk

semua kondisi setelah memproses sejumlah langkah.2. Definiteness, menyatakan bahwa setiap langkah harus dinyatakan

dengan jelas (tidak rancu atau memiliki dua arti).3. Masukan, setiap algoritma dapat tidak memiliki masukan atau

mempunyai satu atau beberapa masukan. Masukan merupakan suatubesaran yang diberikan di awal sebelum algoritma diproses.

4. Keluaran, setiap algoritma memiliki keluaran, entah hanya sebuahkeluaran atau banyak keluaran. Keluaran merupakan besaran yangmempunyai kaitan atau hubungan dengan masukan.

5. Efektivitas, setiap algoritma diharapkan bersifat efektif, dalam artisemua operasi yang dilaksanakan oleh algoritma harus sederhana dandapat dikerjakan dalam waktu yang terbatas. Secara prinsip, setiapinstruksi dalam algoritma dapat dikerjakan oleh orang dengan hanyamenggunakan kertas dan pensil.

Memiliki logika perhitungan / metode yang tepatdalam memecahkan masalah

Menghasilkan output yang tepat dan benar dalamwaktu yang singkat.

Ditulis dengan bahasa yang standart secarasistematis dan rapi sehingga tidak menimbulkan artiganda

Ditulis dengan format yang mudah dipahami, dandiimplementasikan ke dalam bahasa pemograman

Semua Operasi yang dibutuhkan terdefinisi denganjelas

Semua proses harus selalu berakhir setelah sejumlahlangkah dilakukan.

Standart Teknik Pemecahan Masalah

– Top – Down : Merupakan teknik pemecahan masalahyang paling banyak digunakan dimana pada teknik inisuatu masalah yang besar / complex dibagi-bagi kedalam beberapa kelompok masalah yang lebih kecil,Dari kelompok kecil kemudian dianalisa dan apabilamasih memungkinkan untuk dibagi lagi menjadi subbagian lalu kemudian di susun langkah-langkahuntuk menyelesaikan masalah secara detail.

– Bottom – Up : Teknik ini masalah yang besar/komplekdipecahkan dengan melakukan penggabunganprosedur-prosedur yang menjadi satu kesatuanprogram guna menyelesaikan masalah tersebut,teknik ini sudah mulai di tinggalkan.

Standart Penyusunan Program– Kebenaran logika dan penulisan : Program

yang disusun harus memiliki ketepatan,ketelitian, dan kebenaran dalamperhitungan, sehingga hasilnya dapatdipercaya serta harus teliti dalampenulisannya.

– Waktu untuk penulisan program : Programharus dapat menentukan batas waktuminimum dan maksimum dalam penulisanprogramnya yang tersedia secara wajar.

TIPE DATA DAN OPERATOR

Tipe data adalah suatu nilai yangdapat dinyatakan dalam bentukkonstanta atau variabel danoperator yang dapat dikenakanpadanya. Konstanta menyatakannilai yang tetap, sedangkanvariabel menyatakan nilai yangdapat diubah-ubah.

◦ Tipe terdiri dari :- Tipe Sederhana (Simple Type), dapat dibagi menjadi

empat kelompok (disebut juga tipe data dasar), yaitu:1. bilangan bulat (integer)2. bilangan pecahan (float/real)3. teks, yaitu char untuk satu karakter, biasa

menggunakan tanda petik tunggal (‘ ‘) dan stringuntuk karakter lebih dari satu, biasa menggunakantanda petik ganda (“ “).

4. pointer, dan5. Boolean.

- Tipe Terstruktur (Structure Type)1. Array2. Record

Tipe Integer atau Bilangan Bulat (cthnya (..., -2, -1, 0, 1, 2, ...))dapat dideklarasikan dengan menggunakan kata kunci (keyword)

atau kata cadangan (reserved word) yaitu short atau long

Keyword BesarMemori

Jangkauan Nilai

int 16 bit -32768 s.d. 32768

short int 16 bit -32768 s.d. 32768

long int 32 bit -2147483648 s.d. 2147483648

Keyword BesarMemori

Jangkauan Nilai

Unsigned int 16 bit 0 s.d. 65535

Unsigned short int

16 bit 0 s.d. 65535

Unsigned long int

16 bit 0 s.d. 4294967295

// ------------------------------------------------------------------------------// Program ADP_6_memperlihatkan_data_tipe_integer.cpp// Contoh Program Untuk Memperlihatkan Data Bertipe Integer// ------------------------------------------------------------------------------

#include <stdio.h>#include <stdlib.h>

main(){

int a,b,c; // deklarasi tipe data integer

printf("Contoh Program Untuk Menampilkan Data Bertipe Integer\n"); //Judul Program

printf("_____________________________________________________\n"); //Judul Program

printf("\n");

a=25.5; // nilai a berupa bilangan pecahanb=15.0; // nilai b berupa bilangan pecahanc=a+b; // c adalah nilai a ditambah nilai bprintf("%d",c); // menampilkan nilai c hasil penambahan a & b

1. Tentukan nilai a2. Tentukan nilai b3. c = a + b4. Tampilkan nilai

Keterangan dari algoritma di atas adalah : padabaris pertama dan kedua ditentukan nilai a yaitu 25dan nilai b yaitu 15 dengan keduanya bertipeinteger (int). Nilai a disimpan dalam variabel a dannilai b disimpan dalam variabel b. Pada baris ketiga,dimasukkan variabel c dengan rumus = a + b,sehingga pada baris keempat akan ditampilkanproses perhitungan dari variabel c yaitu a + b = 25+ 15 = 40, dimana nilai c disimpan dalam variabel cdan bertipe data integer.

Tipe Pecahan atau Floating Point (cth (1/4, ½,2/3,…) dapat dideklarasikan denganmenggunakan kata kunci (keyword) atau katacadangan (reserved word) yaitu float, double,dan long double

Keyword BesarMemori

Jangkauan Nilai

float 32 bit 3.4E-038 s.d. 3.4E+038

double 64 bit 1.7E-038 s.d. 1.7E+038

long double

64 bit 1.7E-038 s.d. 1.7E+038

// --------------------------------------------------------------------------------// Program ADP_6_memperlihatkan_data_tipe_pecahan.cpp// Contoh Program Untuk Memperlihatkan Data Bertipe Pecahan// --------------------------------------------------------------------------------

#include <stdio.h>#include <stdlib.h>

main(){

float a,b,c;

printf("Contoh Program Untuk Menampilkan Data Bertipe Percahan\n");printf("____________________________________________________\n");printf("\n");

a=25;b=10;c=a/b;

printf("%f\n",c);printf("\n");

system ("Pause");

1. Tentukan nilai a2. Tentukan nilai b3. c = a / b4. Tampilkan nilai

Keterangan dari algoritma di atas adalah : padabaris pertama dan kedua ditentukan nilai a yaitu 25dan nilai b yaitu 10 dengan keduanya bertipepecahan (float). Nilai a disimpan dalam variabel adan nilai b disimpan dalam variabel b. Pada barisketiga, dimasukkan variabel c dengan rumus = a /b, sehingga pada baris keempat akan ditampilkanproses perhitungan dari variabel c yaitu a / b = 25 /10 = 2.500000, dimana nilai c disimpan dalamvariabel c dan bertipe data float.

Teks dapat berupa suatukarakter ataupun suatustring. Tipe Teks dapatdideklarasikan denganmenggunakan kata kunci(keyword) atau katacadangan (reserved word)yaitu char.

// ----------------------------------------------------------------// Program ADP_8_memperlihatkan_data_tipe_teks.cpp// Contoh Program Untuk Memperlihatkan Data Bertipe Teks (karakter)// ----------------------------------------------------------------

#include <stdio.h>#include <stdlib.h>

main(){

char a;

printf("Contoh Program Untuk Menampilkan Data Bertipe Teks (karakter)\n");

pintf(“_________________________________________________________\n");printf("\n");printf("Masukkan huruf: ");scanf("%c",&a);printf("Huruf yang dimasukkan adalah: %c\n",a);printf("\n");

system ("Pause");}

1.Masukkan huruf2.Tampilkan huruf

Keterangan dari algoritma di atasadalah : pada baris pertama, dimintauntuk memasukkan input yang berupahuruf dimana huruf tersebut bertipekarakter (char). Huruf yangdimasukkan tersebut disimpan dalamvariabel a. Pada baris kedua akanditampilkan variabel a tadi.

Deklarasi Tipe Stringjuga menggunakankata kunci chardengan menyebutpanjang dari nilaistringnya.

// ----------------------------------------------------------------------------------// Program ADP_8a_memperlihatkan_data_tipe_teks.cpp// Contoh Program Untuk Memperlihatkan Data Bertipe Teks (string)// ----------------------------------------------------------------------------------

#include <stdio.h>#include <stdlib.h>

main(){

char nama[20];

printf("Contoh Program Untuk Menampilkan Data Bertipe Teks (string)\n");

printf("___________________________________________________________\n");printf("\n");printf("Masukkan nama Anda: ");scanf("%s",&nama);printf("Nama yang dimasukkan adalah: %s\n",nama);printf("\n");

system ("Pause");}

1.Masukkan nama2.Tampilkan nama

Keterangan dari algoritma di atas adalah :pada baris pertama, diminta untukmemasukkan input yang berupa namadimana namatersebut bertipe karakter(dalam hal ini menggunakan tipe datachar yang mempunyai panjang 20karakter). Nama yang dimasukkantersebut disimpan dalam variabel nama.Pada baris kedua akan ditampilkanvariabel nama tersebut.

Jadi perbedaan tipe data karakter dan stringadalah jika tipe data karakter dituliskandengan kata kunci char saja, sedangkan tipedata string ditulis dengan kata kunci chardiikuti tanda kurung siku awal dan akhir,dimana dalam tanda kurung siku tersebutterdapat panjang karakter yang diinginkan.

Pointer adalah suatu variabelyang menyimpan alamat darisuatu data, bukan menyimpandatanya sendiri. Pointerdideklarasikan denganmenggunakan tanda asteris (*)di depan nama variabelnya.

// -------------------------------------------------------------------------------// Program ADP_9_memperlihatkan_data_tipe_pointer.cpp// Contoh Program Untuk Memperlihatkan Data Bertipe pointer// -------------------------------------------------------------------------------#include <stdio.h>#include <stdlib.h>

main(){

int a,b,c,*d,*e,*f;a=1000;b=2050;c=500;d=&a;e=&b;f=&c;

printf("Contoh Program Untuk Menampilkan Data Bertipe Pointer\n");printf("___________________________________________________\n");printf("\n");printf("Pointer d menunjukkan alamat: %p\n",d);printf("Pointer e menunjukkan alamat: %p\n",e);printf("Pointer f menunjukkan alamat: %p\n",f);printf("Alamat tersebut berisi nilai: %d\n",*d);printf("Alamat tersebut berisi nilai: %d\n",*e);printf("Alamat tersebut berisi nilai: %d\n",*f);printf("\n");

system("pause");

Contoh program untuk memperlihatkan data bertipe pointer

1. Definisikan variabel a2. Definisikan variabel b3. Tampilkan nilai b4. Tampilkan nilai pointer b

Keterangan dari algoritma di atas adalah : pada baris pertamadan kedua, diminta untuk mendefinisikan dua buah variabel,yaitu variabel a dengan tipe integer dan variabel b yangmerupakan suatu pointer bertipe integer yang akanmenyimpan alamat dari suatu data. Variabel b merupakansuatu pointer karena dideklarasikan dengan didahului suatukarakter *. Operatos & digunakan untuk mengambil alamatdari suatu data.Pada baris ketiga dan keempat, variabel a diisi dengan nilaiinteger 20 dan nilai ini disimpan pada suatu alamat tertentu.Alamat tersebut kemudian diisikan ke pointer b denganmenggunakan operator & sebagai berikut b = &a. Dengandemikian pointer b sekarang berisi alamat dari nilai integer 20.

/* -----------------------------------------------------------------------------------------

Program ADP_10_memperlihatkan_data_tipe_pointer_pada_string.cppContoh Program Untuk Memperlihatkan Data Bertipe pointer-------------------------------------------------------------

---------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

char *nama;nama="Muhammad Hasbi";

printf("Program untuk melihat tipe data Pointer\n");printf("pada string\n");printf("---------------------------------------\n");printf("\n");printf("%s\n",nama);printf("\n");

system ("Pause");}

Contoh program untuk memperlihatkan data bertipe pointer pada string

1.Definisikan variabel nama2.Tampilkan nilai pointer nama

Keterangan dari algoritma di atas adalah :pada baris pertama diminta untukmendefinisikan sebuah variabel nama yangmerupakan suatu pointer karenadideklarasikan dengan didahului suatukarakter *. Operator & digunakan untukmengambil alamat dari suatu data. Danapada baris kedua, variabel naam diisidengan tipe char dan tipe data ini disimpandalam suatu alamat tertentu.

Dalam program C++ biasanya digunakanvariabel dan konstanta untuk mendefiniskansebuah nilai.

Varibel dalam program digunakan untukmenyimpan suatu nilai, dan nilai yang adapadanya dapat diubah-ubah selama eksekusiprogram berlangsung.

Variabel yang akan digunakan dalam programharus dideklarasikan terlebih dahulu.

Deklarasi Variabel adalah memesan memori danmenentukan jenis data yang dapat disimpan didalamnya.

Bentuk umum pendeklarasian variabel adalah:

tipe daftar-variabel;

Daftar-variabel dapat berupa sebuah variabel ataubeberapa variabel yang dipisahkan dengan tandakoma.

Contoh:

int jumlah;

float harga_per_satuan, total_harga;

Tipe Jumlah Bit

Rentang Data Keterangan

Char 8 -128 s.d. 127 Karakter

Int 16 -32768 s.d.32767

Bilangan bulat (integer)

Float 32 3.4E-38 s.d. 3.4E+38

Bilangan pecahan presisi tunggal

Double

64 1.7E-38 a.d. 1.7E+38

Bilangan pecahan presisi ganda

Void 0 0 Pointer

Tipe Variabel

Tipe Ukuran (Bit) Rentang Data

Unsigned char 8 0 s.d. 255

Char 8 -128 s.d. 127

Enum 16 -32768 s.d. 32767

Unsigned int 16 0 s.d. 65535

Short int 16 -32768 s.d. 32767

Int 16 -32768 s.d. 32767

Unsigned long 32 0 s.d. 4294967295

Long 32 -2147483648 s.d. 2147483647

Float 32 3.4E-38 s.d. 3.4E+38

Double 64 1.7E-308 s.d. 1.7E+308

Long double 80 3.4E-34932s.d. 1.1E+4932

Near pointer 16 Not applicable

Far pointer 32 Not applicable

Tipe Data, Ukuran, dan Rentang Data

Hanya boleh terdiri dari huruf, angka, atau garis bawah (Tidak boleh menggunakan symbol)

Tidak boleh diawali dengan angka

Case sensitive

Harus Unik (tidak boleh sama)

Panjang tidak dibatasi, akan tetapi janganterlalu panjang guna memudahkan dalam penggunaan

Hendaknya mencerminkan kegunaannya

Untuk memberikan nilai ke variabel yangtelah dideklarasikan, bentuk pernyataanyang digunakan adalah:

variabel = nilai;

Contoh:

jumlah = 50;

harga_per_satuan = 15.7;

total_harga = jumlah * harga_per_satuan;

Algoritma untuk contoh di atas:

1. Inisialisasikan variabel jumlah

2. Inisialisasikan variabel harga per satuan

3. Inisialisasikan total harga

4. Tentukan nilai jumlah

5. Tentukan nilai harga per satuan

6. Total harga = jumlah*harga per satuan

7. Tampilkan total harga

Keterangan algoritma di atas:Pada baris pertama, kedua dan ketiga diminta untukmenentukan tipe data yang tepat untuk variabeljumlah dan variabel harga per satuan serta totalharga, dimana tipe data yang tepat adalah pecahan(float). Variabel masing-masing disimpan dengannama jumlah, harga per satuan, serta harga_total.Pada baris keempat dan kelima nilai darikan jumlahditentukan 50 dan nilai harga_per_satuan ditentu15.7.Pada baris keenam, dilakukan proses perhitungandan pencarian nilai dari harga_total dengan rumus =jumlah*harga_per_satuan.Pada baris ketujuh menampilkan harga_total.

/* -------------------------------------------Nama Program: ADP_Soal12.cppContoh Penggunaan dan PemberianNilai Variabel---------------------------------------------

*/

#include <stdio.h>#include <stdlib.h>

main(){

int jumlah;float harga_satuan, harga_total;jumlah = 50;harga_satuan = 15.7;harga_total = jumlah * harga_satuan;printf("Contoh Penggunaan dan \n");printf(“Pemberian Nilai Variabel\n”);printf("--------------------------\n");printf("\n");printf("Harga Total = %.2f\n", harga_total);

system("pause");}

/* ----------------------------Nama Program: ADP_Soal12b.cppContoh Penggunaan variabel---------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int jumlah;float harga_satuan, harga_total;

printf("Contoh Penggunaan dan\n");printf("Pemberian Nilai Variabel\n");

printf("--------------------------\n");printf("Masukkan jumlah: ");scanf("%d",&jumlah);printf("Masukkan Harga Satuan: ");scanf("%f",&harga_satuan);harga_total = jumlah * harga_satuan;printf("\n");printf("Harga Total = %.2f\n", harga_total);printf("\n");

system("pause");}

Beberapa modifikasi tipe (typemodifier) yang dapat dikenakan diawal tipe data dasar (kecuali void)adalah: signed, unsigned, long, danshort.

Misal modifikasi tipe unsigned jikaditerapkan pada tipe int, akan menjadiunsigned int.

Tipe Ukuran (Bit)

Rentang Data

Unsigned char 8 0 s.d. 255

Signed char 8 -128 s.d. 127

Unsigned int 16 -32768 s.d. 32767

Signed int 16 -32768 s.d. 32767

Short int 16 0 s.d 65535

Unsigned short 16 -32768 s.d. 32767

Int 32 -2147483648 s.d. 2147483647

Signed short int 32 -2147483648 s.d. 2147483647

Unsigned Long int

32 0 s.d. 4294967295

Signed long int 80 3.4E-4932 s.d. 1.1E+4932

Unsigned longint

Long doubelModifikasi Tipe Variabel

Dari tabel di atas, dapat dilihat bahwa tipe charsama dengan unsigned char, sedangkan signedint, short int, signed short int, dan intsebenarnya adalah sama. Perbedaan signed danunsigned terletak pada perlakuan bit tertinggi.

Jika dinyatakan dengan signed, maka bit tertinggidigunakan sebagai bit tanda untuk menyatakanapakah bilangannya positif atau negatif.

Hal yang perlu diingat dalam proses modifikasiini adalah tipe data hasil minimum harusmempunyai panjang bit yang sama.

Dalam penulisan program beberapa tipe databoleh tidak ditulis secara lengkap, misalnya:

1.Tipe short int cukup ditulis menjadi short

2.Tipe long int boleh ditulis menjadi long

3.Tipe signed int bisa ditulis menjadi signed

4.Tipe unsigned int boleh ditulis denganunsigned

Konstanta adalah nilai numeris atau karakteryang tetap.

C++ mendukung empat kelas konstanta,yaitu floating point, integer, string, dankarakter.

Penulisan konstanta mempunyai aturantersendiri sesuai dengan tipe masing-masing.

Konstanta Integer

Dapat berupa integer biasa, long integer, danunsigned integer.

Nilai konstanta integer dapat berupa nilaidesimal, oktal (ditulis dengan didahului olehdigit 0), atau hexadesimal (ditulis dengandidahului digit 0 dan karakter X).

Sedangkan konstanta unsigned integer dapatditulis dengan diakhiri huruf U atau u.

Konstant integer ditulis dengan tanpamengandung pemisah ribuan dan tidakmengandung bagian pecahan. Contoh -20dan 2345.Konstanta long integer penulisannya diakhiridengan tanda L atau l, contohnya 346600Latau 325100l.Konstanta unsigned integer jika nilainyamelebihi 65535 maka secara otomatis akandiperlakukan sebagai unsigned long int,contoh 431000u.

Konstanta Floating Point

Dapat mengandung nilai pecahan (dengantanda berupa titik) dan dapat ditulis dalambentuk pecahan desimal biasa maupunbentuk eksponensial (menggunakan tanda E),contoh 35.6 dan 3.2E+5 (maksudnya 3,2 x105).

Konstanta pecahan selalu dinyatakan dalamdouble, kecuali jika diakhiri dengan F atau f(yang berarti menyatakan konstanta float).

Konstanta String

Merupakan deretan karakter yang diawali dengandan diakhiri dengan tanda petik-ganda (“).

Konstanta string yang berisi satu karakterberbeda dengan konstanta karakter, sebabkonstanta karakter diawali dan diakhiri dengantanda petik-tunggal. Jadi “c” tidak sama dengan‘c’.

Konstanta string dapat mengandung karakteryang menggunakan tanda \ (karakter rangkaianescape).

Konstanta Karakter

Selalu ditulis dengan diawali dan diakhiridengan tanda petik-tunggal. Contoh ‘C’ dan‘&’.

Beberapa konstanta karakter dapat ditulisdengan diawali tanda \ (penempatan tanda \setelah tanda petik tunggal).

Karakter yang berawalan tanda \ disebutrankaian escape (escape sequence).

Sequence Karakter Keterangan

\a Bel Bunyi Bel

\b BS Mundur 1 karekter (backspace)

\f FF Ganti halaman (form feed)

\n LF Ganti baris (line feed)

\r CR Kembali ke awal kolom (carriage return)

\t HT Tabulasi horizontal (horizontal tab)

\v VT Tabulasi vertikal (vertical tab)

\ \ Backslash

\’ ‘ Petik tunggal

\” “ Petik ganda

\? ? Tanda tanya

\DDD Apapun DDD adalah digit nilai oktal

\xHHH Apapun HHH adalah digit nilai heksadesimal

\0 NULL Karakter ASCII = 0

Ekspresi adalah sesuatu yang dapat menghasilkan nilaiEkspresi dibagi menjadi 2 yaitu Operand dan OperatorOperator dibagi 2 berdasarkan operand yaitu– Unary : satu operand– Binary : dua operand

Contoh Ekpresi : 6 + 3Angka 6 dan angka 3 adalah Operand sedangkan Simbol tambah adalah operatorContoh Unary : - 4Simbol minus adalah Operator dan Angka 4 adalah

OperandContoh Binary : 7 * 2Angka 7 dan 2 adalah Operand dan Simbol asteris adalah operator

Operasi apa saja yang dapat dikenakan pada tipedata, variabel dan konstanta tidak lepas darioperator.

Operator merupakan simbol atau kata yang dapatdigunakan dalam program untuk melakukansuatu operasi atau manipulasi, sepertimenjumlahkan dua buah nilai, memberikan nilaike suatu variabel, membandingkan dua buahnilai dan lain-lain.

Sebagian operator C++ tergolong sebagaioperator binary, yaitu operator yang dikenakanterhadap dua buah nilai (operand).

Operator Pengerjaan (assignment operator)

Operator Aritmatika

/* ----------------------------Nama Program: ADP_Soal13.cppContoh PenggunaanOperator Pngerjaan---------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int a,b,c;a=10;c=b=a;printf("Contoh Program Penggunaan Operator Pengerjaan\n");printf("_____________________________________________\n");printf("\n");printf("a=%d\n",a);printf("b=%d\n",b);printf("c=%d\n",c);system("pause");

}

Operator Keterangan

* Perkalian

/ Pembagian

% Modulus atau sisa pembagian

+ Penjumlahan

- PenguranganOperator Binary

Operator Keterangan

+ Tanda plus

- Tanda minus

++ Prefix: preincrement; Postfix: postincrement

-- Prefix: predecrement; postfix: postdecrementOperator Unary

/* ----------------------------Nama Program: ADP_Soal14.cppContoh PenggunaanOperator Aritmatika---------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

float luas, pi, jari;pi = 3.141593;jari = 12.0;luas = pi*jari*jari;

printf("Contoh Program Penggunaan Operator Arimatika\n");printf("_____________________________________________\n");printf("\n");printf("Jari-jari = %f\n",jari);printf("luas = %f\n",luas);printf("\n");

system("pause");}

Tertinggi

++ --

- (unary minus)

* / %

Terendah

+ -

Hirarki pada operator aritmatika

C++ mempunyai operator terkenal yaituoperator peningkatan (increment operator)yang menggunakan tanda ++ dan operatorpenurunan (decrement operator) yangmenggunakan tanda --.

Operator peningkatan digunakan untukmenambahkan nilai 1 pada nilai sebelumnyadan operator penurunan digunakan untukmengurangi nilai 1 pada nilai sebelumnya.

Operator

Keterangan

<< Shift left (pergeseran ke kiri)

>> Shift right (pergeseran ke kanan)

& Operasi bit AND

| Operasi bit OR

^ Operasi bit XOR

~ Operasi bit NOT

Operator Bitwise

Tertinggi

~

>> <<

&

^

Terenda |

Digunakan untuk membandingkan dua buahnilai dan akan dihasilkan perbandingannya,yaitu betul (bernilai 1) atau salah (bernilai 0)

Operator ini banyak digunakan padapenyeleksian suatu kondisi di statemen IF

Operator Keterangan

> Lebih besar

>= Lebih besar sama dengan

< Lebih kecil

<= Lebih kecil sama dengan

== Sama dengan

!= Tidak sama dengan

Disamping operator hubungan, C++ jugamenyediakan tiga buah operator logika yangbiasanya berpasangan dengan operatorhubungan

Operator Keterangan

&& Operator Logika AND

|| Operator Logika OR

! Operator Logika NOT

A B A && B A || B

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 1

/* -------------------------------------Nama Program: ADP_Soal16.cppContoh Penggunaan Operator Logika AND------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int nilai, tugas;

printf("Contoh Program Penggunaan Operator Logika AND\n");printf("_____________________________________________\n");printf("\n");

printf("Masukkan Nilai: ");scanf("%d",&nilai);printf("Masukkan Nilai Tugas: ");scanf("%d",&tugas);

if(nilai>70 && tugas>=75)printf("Lulus\n");

elseprintf("Tidak Lulus\n");

printf("_______________________________________________");printf("\n");printf("\n");

system("pause");}

Operator Keterangan

& Address of operator

* Indirection operator

/* -------------------------------Nama Program: ADP_Soal17.cppContoh Penggunaan Operator Koma------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

char kar1, kar2;(kar1='A', kar2='B');

printf("Contoh Program Penggunaan Operator Koma\n");printf("_______________________________________\n");printf("\n");

printf("%c\n",kar1);printf("%c\n",kar2);

system("pause");}

a = a + b a +=b

a = a – b a -=b

STRUKTUR KEPUTUSAN (DECISION)

Struktur keputusan (decision) adalah strukturprogram yang melakukan proses pengujianuntuk mengambil suatu keputusan apakahsuatu baris atau blok instruksi akan diprosesatau tidak. Pengujian kondisi ini dilakukanuntuk memilih salah satu dari beberapaalternatif yang tersedia.C++ menyediakan dua perintah pengambilankeputusan yaitu perintah IF dan perintahSWITCH yang disertai dengan CASE

Syarat dalam dunia pemrogramanadalah sebuah pernyataanBoolean, yang dapat bernilaibenar (true) atau salah (false).Biasanya sebuah syarat terdiri darioperand-operand yangdihubungkan dengan operatorlogika. Yaitu: =, <>, >, <, >=,<=, and dan or.

Berguna untuk memilih satu daridua atau lebih alternatif jawabanyang tersedia.

Jika perintah IF tersebut terdiridari 2 atau lebih pernyataan,maka pernyataan tersebut harusberada di antara begin dan end.

Bentuk umum perintah if (tunggal sederhana)

if (kondisi)

pernyataan

Bentuk di atas mempunyai arti jika kondisi bernilaibenar maka pernyataan di bawahnya akan dikerjakan.

Bentuk perintah if tunggal blok statemen (majemuk).

if (kondisi)

{

pernyataan1

pernyataan2

dst

}

/* ----------------------------------------------------------------------Nama Program: ADP_19Struktur Keputusan dengan Statemen if Tunggal Sederhana----------------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int beli, diskon, total;printf("Contoh Struktur Keputusan\n");printf("dengan Statemen if Tunggal Sederhana\n");printf("____________________________________\n");printf("\n");printf("Masukkan nilai pembelian: "); scanf("%d",&beli);

if (beli>100000)diskon=10*beli/100;

total=beli-diskon;printf("\n");

printf("Jadi pembelian adalah: %d\n",beli);printf("dengan discount: %d\n",diskon);printf("dan total pembayaran sebesar Rp. %d\n",total);

system("pause");}

/* -----------------------------Nama Program: ADP_Soal15b.cppStatemen if Tunggal Sederhana----------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int jumlah_anak;float gaji_kotor, gaji_bersih, tunjangan, potongan,

persen_tunjangan=0.2, persen_potongan=0.05;printf("Contoh Program Penggunaan Statemen if Tunggal Majemuk\n");printf("_______________________________________________________\n");printf("\n");printf("Gaji kotor yang diperoleh = Rp. ");scanf("%f",&gaji_kotor);printf("Jumlah anak = ");scanf("%d",&jumlah_anak);if(jumlah_anak>2){persen_tunjangan = 0.3;persen_potongan = 0.07;}tunjangan = persen_tunjangan * gaji_kotor;potongan = persen_potongan * gaji_kotor;gaji_bersih = gaji_kotor + tunjangan - potongan;printf("Besarnya Tunjangan = Rp. %.2f\n",tunjangan);printf("Besarnya Potongan = Rp. %.2f\n",potongan);printf("Jadi, Gaji Bersihnya = Rp. %.2f\n",gaji_bersih);

system("pause");}

/* --------------------------------------------------------------------Nama Program: ADP_20Contoh Struktur Keputusan dengan Statemen if Majemuk--------------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int beli, diskon, pajak, total_harga;printf("Contoh Struktur Keputusan\n");printf("dengan Statemen if Majemukprintf("__________________________\n");printf("\n");printf("Masukkan nilai pembelian: "); scanf("%d",&beli);

if (beli>100000){diskon=10*beli/100;pajak=0.01*beli;}total_harga=beli-diskon;printf("\n");

printf("Jadi pembelian adalah: %d\n",beli);printf("dengan discount: %d\n",diskon);printf("dikenakan pajak: %d\n",pajak);printf("dan total pembayaran dengan diskon Rp. %d\n",total_harga);printf("dan total pembayaran dikenakan pajak sebesar Rp. %d\n",total_harga+pajak);system("pause");

}

Bentuk umum dari if .. else

if (kondisi)

pernyataan1

else

pernyataan2

Bentuk umum ini berarti jika kondisi benarmaka pernyataan1 akan dikerjakan dan jikakondisi salah maka pernyataan2 yang akandikerjakan

/* ---------------------------------------------------Nama Program: ADP_21Contoh Struktur Keputusan dengan if..else---------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int nilai;printf("Contoh Struktur Keputusan Dengan if..else\n");printf("_________________________________________\n");printf("\n");

printf("Masukkan sebuah nilai: ");scanf("%d",&nilai);

if (nilai>70)printf("Lulus\n");

elseprintf("Tidak Lulus\n");

printf("\n");system("pause");

}

Bentuk umum dari if .. else

if (kondisi1)

pernyataan1

else if (kondisi2)

pernyataan2

Bentuk ini disebut if..else if tangga, karenamempunyai bentuk seperti sebuah tangga

Contoh:Akar-akar dari suatu persamaan kuadrataX2 + bX2 + c = 0 tergantung dari nilai determinannya. Nilai determinan (D) dapatdihitung dengan rumus:D = b2 – 4acJika D bernilai positif, maka akan mempunyai dua akar riel yang berbeda yaitu:

X1 = dan X2 =

Jika D bernilai 0, maka akan mempunyai dua buah akar riel kembar, yaitu

X1 = X2 =

jika D bernilai negatif, maka akan dihasilkan dua akar imajiner:

X1 = X2 = , tanda i menunjukkan bahwa nilai tersebut

adalah nilai imajiner.

/* -------------------------Nama Program: ADP_21Contoh Struktur Keputusandengan if..else if..else------------------------- */

#include <stdio.h>#include <math.h>#include <stdlib.h>

main(){

float A, B, C, D, X1, X2;printf("Contoh Struktur Keputusan\n");printf("dengan Statemen if..else if..else\n");printf("\n");printf("Menghitung Akar-akar Persamaan

Kuadrat");printf("____________________________________\n");printf("\n");

/* Masukkan Data Koefisien Persamaan Kuadrat */

printf("Masukkan nilai a: ");scanf("%f",&A);printf("Masukkan nilai b: ");scanf(“%f",&B);printf("Masukkan nilai c: ");scanf("%f",&C);printf("\n");

/* Menghitung Nilai Determinan */D = B*B - 4*A*C;

/* Menyeleksi Nilai Determinan */if(D==0){

X1 = -B / (2*A);printf("Dua akar riel kembar: \n");printf("X1 = X2 = %.2f\n",X1);

}else if (D>0){

X1 = (-B + sqrt(D)) / (2*A);X2 = (-B - sqrt(D)) / (2*A);printf("Dua akar riel berlainan: \n");printf("X1 = %.2f\n",X1);printf("X2 = %.2f\n",X2);

}else if (D<0){

X1 = -B / (2*A);X2 = sqrt(-D) / (2*A);printf("Dua akar imajiner berlainan: \n");printf("X1 = %.2f + %.2f i\n",X1,X2);printf("X2 = %.2f - %.2f i\n",X1,X2);

}system("pause");

}

/* -------------------------------------Nama Program: ADP_21Contoh Struktur Keputusandengan if..else if..else Alternatif-------------------------------------- */

#include <stdio.h>#include <math.h>#include <stdlib.h>

main(){

float A, B, C, D, X1, X2;printf("Contoh Struktur Keputusan\n");printf("dengan Statemen if..else if..else

Alternatif\n");printf("\n");printf("Menghitung Akar-akar Persamaan

Kuadrat");printf("____________________________________\n");printf("\n");

/* Masukkan Data Koefisien Persamaan Kuadrat */

printf("Masukkan nilai a: ");scanf("%f",&A);printf("Masukkan nilai b: ");scanf(“%f",&B);printf("Masukkan nilai c: ");scanf("%f",&C);printf("\n");

/* Menghitung Nilai Determinan */D = B*B - 4*A*C;

/* Menyeleksi Nilai Determinan */if(D==0){

X1 = -B / (2*A);printf("Dua akar riel kembar: \n");printf("X1 = X2 = %.2f\n",X1);

}if (D>0){

X1 = (-B + sqrt(D)) / (2*A);X2 = (-B - sqrt(D)) / (2*A);printf("Dua akar riel berlainan: \n");printf("X1 = %.2f\n",X1);printf("X2 = %.2f\n",X2);

}if (D<0){

X1 = -B / (2*A);X2 = sqrt(-D) / (2*A);printf("Dua akar imajiner berlainan: \n");printf("X1 = %.2f + %.2f i\n",X1,X2);printf("X2 = %.2f - %.2f i\n",X1,X2);

}system("pause");

}

Bentuk umumif (kondisi1)

if (kondisi2)pernyataan1;

elsepernyataan2;

elsepernyataan3;

d

/* --------------------------------------Nama Program: ADP_21Contoh Struktur Keputusan if Bersarang-------------------------------------- */

#include <stdio.h>#include <math.h>#include <stdlib.h>

main(){

float A, B, C, D, X1, X2;printf("Contoh Struktur Keputusan\n");printf("dengan Statemen if Bersarang\n");printf("_________________________\n");printf("\n");printf("Menghitung Akar-akar

PersamaanKuadrat\n");printf("\n");

/* Masukkan Data Koefisien Persamaan Kuadrat */printf("Masukkan nilai a: ");scanf("%f",&A);printf("Masukkan nilai b: ");scanf("%f",&B);printf("Masukkan nilai c: ");scanf("%f",&C);printf("\n");

/* Menghitung Nilai Determinan */D = B*B - 4*A*C;

/* Menyeleksi Nilai Determinan */if(D>=0)

if(D==0){X1 = -B / (2*A);printf("Dua akar riel kembar: \n");printf("X1 = X2 = %f\n",X1);

}else{

X1 = (-B + sqrt(D)) / (2*A);X2 = (-B - sqrt(D)) / (2*A);printf("Dua akar riel berlainan: \n");printf("X1 = %f\n",X1);printf("X2 = %f\n",X2);

}else{

X1 = -B / (2*A);X2 = sqrt(-D) / (2*A);printf("Dua akar imajiner berlainan:

\n");printf("X1 = %f + %f i\n",X1,X2);printf("X2 = %f - %f i\n",X1,X2);

}system("pause");

}

/* ----------------------------Nama Program: ADP_Soal21.cppContoh Struktur Keputusandengan if..else majemuk---------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int nilai;char huruf;

printf("Contoh Program Struktur Keputusan\n");printf("dengan if..else majemuk\n");printf("_________________________________\n");Printf("Masukkan Nilai Akhir Mahasiswa: "); scanf("%d",&nilai);

if (nilai>=81 && nilai <=100)huruf='A';

elseif (nilai>=71 && nilai <81)

huruf='B';elseif (nilai>=61 && nilai <71)

huruf='C';elseif (nilai>=51 && nilai <61)

huruf='D';else

huruf='E';

printf("Jadi Nilai Akhir Mahasiswa: %d, dengan Huruf : %c",nilai, huruf);printf("\n");

system("Pause");}

Perintah SWITCH merupakanpernyataan yang dirancang untukmenangani pengambilankeputusan yang melibatkansejumlah pilihan alternatif yangdiantaranya untuk menggantikanpernyataan IF bertingkat.

Bentuk umumswitch (ekspresi)

{case konstanta1;

pernyataan1;break;

case konstanta2;pernyataan2;break;

default:pernyataanx;

}

main(){

int kdhari;

printf("Masukkan Kode Hari [1..7]: "); scanf("%d",&kdhari);

switch (kdhari){

case 1:printf("Senin");

break;case 2:

printf("Selasa");break;

case 3:printf("Rabu");

break;case 4:printf("Kamis");

break;case 5:printf("Jum'at");

break;case 6:printf("Sabtu");

break;case 7:printf("Minggu");break;

default:printf("Kode tidak ada, hari tidak ditemukan");

}printf("\n");printf("\n");

system("pause");}

Buatlah flowchart dan program untukmenghitung besarnya tunjangan yang akanditerima oleh seorang pegawai. Besar tunjangantergantung dari jumlah anaknya. Jika pegawai tsbmempunyai anak kurang dari 3, makatunjangannya adalah sebesar 20% dari gajikotornya. Jika jumlahnya lebih besar atau samadengan 3, maka tunjangannya adalah 30% darigaji kotornya. Gaji juga akan dipotong untukkeperluan asuransi, 5% untuk yang mempunyaianak kurang dari 3 dan 7% untuk yang lebihbesar atau sama dengan 3.

Buatlah flowchart dan program dalam bentuk menu, untuk menghitung:

a. Volume dari tabung

b. Luas dan keliling persegi panjang

c. Luas dan keliling bujur sangkar

Buatlah flowchart di sebuah kertas dan programnya dalam bentuk file

ALGORITMA & DASAR PEMROGRAMAN

Perintah perulangan (looping)digunakan untuk melakukan suatuproses secara berulang-ulang, jikasuatu kondisi dipenuhi atausebaliknya.

Pada prakteknya prosespengulangan biasanya digunakanuntuk beberapa hal, misalnyamengulang proses pemasukan data,mengulang proses perhitungan danmengulang proses penampilan hasil

Proses looping yang menggunakanpenghitung (counter) dapat dibuatmenggunakan pernyataan FOR. Pernyataan inidigunakan bila sudah diketahui berapa kalisebuah atau beberap pernyataan akandilakukan perulangan.Bentuk umum:for(awal;akhir;peningkatan/penurunan){pernyataan;}

Bentuk di atas berarti:a.Awal adalah inisialisasi untuk memberi nilai awal

terhadap variabel pengendali looping (disebut jugaindeks atau loop-control variable).

b. Akhir adalah kondisi untuk keluar dari loopingatau kondisi yang harus dipenuhi supayaperulangan masih dapat terus dilakukan.

c.Penurunan/peningkatan adalah pengatur kenaikanatau penurunan nilai variabel pengendali looping

Misalkan untuk menampilkan tulisan “ContohPenggunaan Statemen For” sebanyak 5 kali, makasesuai dengan bentuk umum di atas penulisannyaadalah sebagai berikut:

/* ---------------------------------Nama Program: ADP_21cppStatemen for----------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int X;printf("Contoh Program Penggunaan Statemen

for\n");printf("_______________________________\n");printf("\n");

for(X=1; X<=5; X++)printf("Contoh Penggunaan Statemen For\n");

printf("\n");system ("pause");

}

Algoritma program di atas adalah:1. Tentukan nilai awal, batas akhir dan penambahan nilai2. Cetak kalimat3. Ulangi langkah 1 sampai batas akhirBeberapa contoh perulangan dengan statemen for dan variasinya adalah:

1. Perulangan Positif,2. Perulangan Negatif,3. Perulangan dengan Blok Statemen,4. Statemen For Tanpa Nilai Awal,5. Statemen For Tanpa Peningkatan,6. Statemen For Tanpa Nilai Awal dan Peningkatan7. Perulangan For Tanpa Nilai Awal, Akhir, dan Peningkatan8. Perulangan dengan Statemen Kosong9. Variasi di Kondisi Perulangan10. Statemen For Menggunakan Operator Koma11.Perulangan For Bersarang12.Statemen break untuk Menghentikan Perulangan for

/* --------------------------------------------------------------

Nama Program: ADP_2_for_perulangan_positif.cppStatemen for Perulangan Positif dengan Penambahan 1------------------------------------------------------------

---- */#include <stdio.h>#include <stdlib.h>

main(){

int I;printf("Contoh Program Penggunaan Statemen for");

printf(" Perulangan Positif dengan Penambahan 1\n");printf(“______________________________\n");printf("\n\t");

for(I=-5; I<=5; I++)printf("%d\n\t",I);

printf("\n");system ("pause");

}

/* ---------------------------------------------------------------------------

Nama Program: ADP_2a_for_perulangan_positif.cppStatemen for Perulangan Positif dengan Penambahan lebih dari 1--------------------------------------------------------------

------------- */#include <stdio.h>#include <stdlib.h>

main(){

int I;printf("Contoh Program Penggunaan Statemen for");

printf(" Perulangan Positif dengan Penambahan Lebih Dari 1\n");printf("______________________________________\n");printf("\n\t");

for(I=-5; I<=10; I+=3)printf("%d\n\t",I);

printf("\n");system ("pause");

/* -----------------------------------------------------------------

Nama Program: ADP_3_for_perulangan_negatif.cppStatemen for Perulangan Negatif dengan Pengurangan 1------------------------------------------------------------

------ */

#include <stdio.h>#include <stdlib.h>

main(){

int I;printf("Contoh Program Penggunaan Statemen for");

printf(" Perulangan Negatif dengan Pengurangan 1\n");printf(“_______________________________\n");printf("\n\t");

for(I=5; I>0; I--)printf("%d\n\t",I);

printf("\n");system ("pause");

/* -----------------------------------------------------------------------------

Nama Program: ADP_3a_for_perulangan_negatif.cppStatemen for Perulangan Negatif dengan Pengurangan Lebih dari 1------------------------------------------------------------

------------------ */

#include <stdio.h>#include <stdlib.h>

main(){

int I;printf("Contoh Program Penggunaan Statemen for");

printf(" Perulangan Negatif dengan Pengurangan Lebih dari 1\n");printf("_______________________________________\n");printf("\n\t");

for(I=5; I>=-5; I-=3)printf("%d\n\t",I);

printf("\n");system ("pause");

/* -------------------------------Nama Program: ADP_25.cppStatemen for Perulangan DenganBlok Statemen------------------------------- */

#include <stdio.h>#include <stdlib.h>main(){

int I,N;float X, Rata, Total=0;printf("Contoh Program Penggunaan Statemen

for\n");printf("untuk Perulangan Dengan Blok

Statemen\n");printf("_____________________________________\n");printf("\n");

/*Masukkan Jumlah Data*/printf("Masukkan Jumlah Data yang diinginkan: ");scanf("%d",&N);printf("\n");

/*Memasukkan Nilai dari masing-masing Data*/for(I=1; I<=N; I++){

printf("Data ke %d : ",I);scanf("%f",&X);Total=Total+X;

}Rata=Total/N;printf("\n");

/*Menampilkan Hasil*/printf("Banyaknya data: %d\n",N);printf("Nilai total seluruh data:

%.2f\n",Total);printf("Rata-rata nilai:

%.2f\n",Rata);printf("\n”);

system ("pause");}

/* -----------------------------------------------------------------------

Nama Program: ADP_4_statemen_for_tanpa_nilai_awal.cppStatemen for Tanpa Nilai Awal----------------------------------------------------------------------

- */

#include <stdio.h>#include <stdlib.h>

main(){

int X;X=1;

printf("Contoh Program Penggunaan Statemen for\n");printf("Tanpa Nilai Awal\n");

printf(“_______________________________\n");printf("\n");

for(; X<=5; X++)printf("Contoh Penggunaan Statemen For Tanpa Nilai Awal\n");

printf("\n");system ("pause");

/* -------------------------------------------------------------------------------------

Nama Program: ADP_5_statemen_for_tanpa_peningkatan_penurunan.cppStatemen for Tanpa Nilai Peningkatan atau Penurunan---------------------------------------------------------------------

------------------ */#include <stdio.h>#include <stdlib.h>

main(){

int X;

printf("Contoh Program Penggunaan Statemen for\n");printf("Tanpa Nilai Peningkatan atau Penurunan\n");

printf(“_______________________________\n");printf("\n");

for(X=1; X<=5;){X++;printf("Contoh Penggunaan Statemen For Tanpa Nilai Peningkatan atau

Penurunan\n");}

printf("\n");system ("pause");

/* -----------------------------------------------------------------------------------------

Nama Program: ADP_5a_statemen_for_tanpa_peningkatan_penurunan.cpp

Statemen for Tanpa Nilai Peningkatan atau Penurunan-------------------------------------------------------

----------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int X;

printf("Contoh 2 Program Penggunaan Statemen for\n");printf("Tanpa Nilai Peningkatan atau Penurunan\n");

printf(“_________________________________\n");printf("\n\t");

for(X=3; X<=7;){printf("%d\n\t",X++);}

printf("\n");

/* ------------------------------------------------------------------------------------------

Nama Program: ADP_5b_statemen_for_tanpa_peningkatan_penurunan.cpp

Statemen for Tanpa Nilai Peningkatan atau Penurunan-------------------------------------------------------

----------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int X;

printf("Contoh 3 Program Penggunaan Statemen for\n");printf("Tanpa Nilai Peningkatan atau Penurunan\n");

printf(“_________________________________\n");printf("\n\t");

for(X=3; X<=7;){printf("%d\n\t",++X);}

printf("\n");

/* -----------------------------------------------------------------------------------------------

Nama Program: ADP_6_for_tanpa_nilai_awal_dan_peningkatan_penurunan.cppStatemen for Tanpa Nilai Awal dan Peningkatan atau Penurunan----------------------------------------------------------------------

------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int X=1;

printf("Contoh Program Penggunaan Statemen for\n");printf("Tanpa Nilai Awal dana Peningkatan atau Penurunan\n");printf(“_____________________________________\n");printf("\n");

for(; X<=5;){X++;

printf("Contoh Penggunaan Statemen For Tanpa Nilai Awal");printf(" dan Peningkatan atau Penurunan\n");

}printf("\n");

system ("pause");

/* ------------------------------------------------------------------------------------------------------

Nama Program: ADP_7_for_tanpa_nilai_awal_akhir_dan_peningkatan_penurunan.cpp

Statemen for Tanpa Nilai Awal, Akhir dan Peningkatan atau Penurunan----------------------------------------------------------------------

-------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

printf("Contoh Program Penggunaan Statemen for\n");printf("Tanpa Nilai Awal, Nilai Akhir, dan Peningkatan atau Penurunan\n");

printf(“_____________________________________________\n");printf("\n");

for(;;){printf("Contoh Penggunaan Statemen For Tanpa Nilai Awal");

printf(" dan Peningkatan atau Penurunan yang akan ditampilkan TANPA HENTI\n");

}printf("\n");

/* -------------------------------------------------------------------------------------------------------

Nama Program: ADP_7a_for_tanpa_nilai_awal_akhir_dan_peningkatan_penurunan.cpp

Statemen for Tanpa Nilai Awal, Akhir dan Peningkatan atau Penurunandengan statemen break

--------------------------------------------------------------------------------------------------------- */#include <stdio.h>#include <stdlib.h>

main(){

printf("Contoh Program Penggunaan Statemen for\n");printf("Tanpa Nilai Awal, Nilai Akhir, dan Peningkatan atau Penurunan\n");

printf("_____________________________________________\n");printf("\n");

for(;;){printf("Contoh Penggunaan Statemen For Tanpa Nilai Awal");

printf(" dan Peningkatan atau Penurunan\n");printf(" dengan statemen break\n");

break;}printf("\n");

system ("pause");

/* -------------------------------------Nama Program: ADP_25.cppStatemen for Tanpa Nilai Awal,Akhir, dan Peningkatan atau Penurunan------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

printf("Contoh Program Penggunaan Statemen for\n");printf("Tanpa Nilai Awal, Akhir, dan");printf("Peningkatan atau Penurunan\n");printf("_______________________________________\n");printf("\n");

for(;;){

printf("Tampilan ini terus ditampilkan TANPA BERHENTI\n");printf("\n");break;

}

system ("pause");}

/* ------------------------------------------Nama Program: ADP_25.cppStatemen for dengan Perulangan menggunakanStatemen Kosong------------------------------------------ */

#include <stdio.h>#include <stdlib.h>#include <conio.h>

main(){

int I;long int J;

clrscr();printf("Contoh Variasi Program di Kondisi Perulangan\n");printf("____________________________________________\n");printf("\n");

for(I=1; I<=10;I++){gotoxy(40,12);printf("/");

for(J=0;J<500000000;J++);gotoxy(40,12);printf("\\");for(J=0;J<500000000;J++);

}system ("pause");

}

/* --------------------------------------------Nama Program: ADP_25.cppContoh Variasi Program di Kondisi Perulangan-------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int I, J, N;printf("Contoh Variasi Program Menggunakan Operator Koma\n");printf("________________________________________________\n");printf("\n");

N=5;for(I=1,J=N;I<=N;I++,J--)

printf("I = %d dan Y = %d\n",I,J);

system ("pause");}

/* -------------------------------------Nama Program: ADP_25.cppContoh Program Statemen for bersarang------------------------------------- */

#include <stdio.h>#include <stdlib.h>main(){

int I, J;printf("Contoh Program Penggunaan Statemen for

bersarang\n");

printf("________________________________________________\n");printf("\n");

for(I=1;I<=3;I++){for(J=1;J<=4;J++)

printf(" (I = %d, Y = %d)",I,J);printf("\n");

}

Bentuk umum:

while (kondisi)

pernyataan;

atau

while (kondisi){

pernyataan1;

pernyataan2;

}

Pernyataan dapat berupa pernyataan kosong,pernyataan tunggal atau blok pernyataanyang akan diproses secara berulang-ulang.

Proses perulangan akan masih dilakukan jikakondisi yang diseleksi di pernyataan whilemasih bernilai benar dan perulangan akanberhenti jika kondisinya sudah bernilai salah.

/*-----------------------------------Program ADP_While_1.cppStatemen while----------------------------------- */

#include<stdio.h>#include<stdlib.h>

main(){

int X;printf("Contoh Program Penggunaan Statemen While\n");printf("________________________________________\n");

X=7;while(X>5)printf("%d",X++);

system("pause");}

/* ------------------------------------Program ADP_While_1a.cppStatemen while------------------------------------ */

#include<stdio.h>#include<stdlib.h>

main(){

int X;printf("Contoh 2 Program Penggunaan Statemen While\n");printf("________________________________________\n");printf("\n\t");

X=3;while(X<=7)printf("%d\n\t",X+=2);printf("\n");

system("pause");}

/* ------------------------------------Program ADP_While_1b.cppStatemen while------------------------------------- */

#include <stdio.h>#include <stdlib.h>#include <conio.h>

main(){

char C='\0';printf("Contoh 3 Program Penggunaan Statemen While\n");printf("________________________________________\n");printf("\n”);

while(!(C=='N' || C== 'n')) C=getche();system("pause");

}

Bentuk umum:

do pernyataan;

while (kondisi)

atau

while (kondisi){

pernyataan1;

pernyataan2;

}

WHILE

DO... WHILE

WHILE... CONTINUE

ALGORITMA DAN DASAR PEMROGRAMAN

Program komputer yang dibuat untukmenjawab permasalahan umumnyaberukuran sangat besar, karena itu perludibuat potongan-potongan program yanglebih kecil (biasa disebut modul) yang lebihmudah untuk ditangani dibanding denganprogram yang terdiri dari banyak baris.

Modul program ini disebut fungsi (function).

Pemrograman C ditulis denganmengkombinasikan fungsi baru yang ditulisoleh pemrogram (disebut programmer-defined function) dengan fungsi yang telahtersedia di dalam pustakanya (disebutstandard library).

Fungsi merupakan blok dari kode yangdirancang untuk melakukan tugas khusus.

Tujuan pembuatan fungsi:

1. Program menjadi lebih terstruktur denganmemecah program menjadi beberapaprogram yang lebih kecil, yang masing-masing mempunyai tugas tertentu.

2. Mengurangi duplikasi kode atau penulisankode yang sama yang ditulis secaraberulang-ulang.

Supaya dapat digunakan, fungsi harus dapatdipanggil dari bagian program yangmembutuhkannya. Karena itu fungsi harusdiberi nama dan nama ini harus didefinisikandan dideklarasikan terlebih dahulu.

Pemanggilan fungsi bertujuan untukmengerjakan suatu tugas tertentu yang dapatberupa tugas input/output, tugaspenyeleksian, atau tugas perhitungan.

Bagian program yang menggunakan fungsidapat berkomunikasi dengan fungsinya lewatpengiriman parameter-parameter yangdilakukan melalui argumen-argumen fungsi.

Fungsi terdiri dari dua buah komponenutama, yaitu definisi fungsi dan tubuh fungsi.

Definisi fungsi berisi tipe dari fungsi, namafungsi, dan argumen-argumennya jikadigunakan.

Tubuh fungsi berisi statemen-statemen yangakan melakukan tugas yang diberikan kepadafungsi tersebut, yang ditulis di dalam tandakurung kurawal buka dan tutup.

Bentuk umum fungsi, yaitu:

Definisi fungsi ditulis sebelum tubuh fungsitanpa diakhiri dengan titik koma.

Tipe di definisi fungsi menunjukkan tipe darifungsi, dimana tipe dari fungsi ini tergantungdari tipe data hasil balik yang akan diberikanoleh fungsi.Jika hasil balik dari fungsimisalnya berupa nilai pecahan, maka tipefungsi dapat dibuat float atau double ataulong double.

Jika fungsi tidak memberikan hasil balik,maka tipenya adalah void. Tipe dari fungsi inidapat tidak ditulis jika tipenya adalah int atauchar. Jadi, jika suatu fungsi didefinisikantanpa menggunakan tipenya, maka akandianggap bertipe int.

Nama dari fungsi merupakan nama yangdibentuk sendiri oleh pembuat program.

Sebuah fungsi dapat memiliki satu atau lebihargumen yang ditulis dengan dipisahkan olehkoma atau suatu fungsi dapat tidakmempunyai argumen sama sekali. Jikaargumen tidak digunakan, kurung buka dankurung tutup setelah nama dari fungsi tetapharus dituliskan.Tipe data void dapat dituliskan sebagaipengganti argumen untuk fungsi yang tidakmenggunakan argumen.

Argumen yang berada di definisi fungsi inidisebut dengan argumen formal atauparameter formal. Parameter-parameterformal ini dimaksudkan sebagai alatkomunikasi untuk data yang dikirimkan daribagian program yang menggunakan fungsike fungsi bersangkutan.

Parameter-parameter formal dapat dituliskandengan dua cara, yaitu cara baru dan cara lama.

Cara baru dilakukan dengan menuliskanparameter-parameter formal yang diawalidengan tipe datanya. Contohnya:

int Fungsi_Ku(float A, int B, char C)

Contoh yang salah:

int Fungsi_Ku(float A, B, char C)

Cara lama untuk menuliskan parameter formal adalahdengan memecahnya menjadi dua bagian. Pertama, semuaparameter formal ditulis tanpa tipe datanya. Kedua,parameter-parameter formal ini dideklarasikan terpisahdengan tipe datanya setelah definisi dari fungsi. Contoh:int Fungsi_Ku(A, B, C)float A;int B;char C;{

/*tubuh fungsi*/}

/*tidak diakhiri titik koma*//*diakhiri titik koma*//*diakhiri titik koma*//*diakhiri titik koma*/

Standar ANSI lebih menganjurkanpenggunaan cara baru.

Penulisan parameter-parameter formaldengan cara lama digunakan pada awalbahasa C diciptakan dan masih banyak yangmenggunakannya sampai saat ini untukmenjaga kompatibilitas dengan kompiler Cyang menggunakan cara lama. Kompiler-kompiler C yang baru umumnya mendukungdua cara penulisan ini.

Berikut ini beberapa contoh penulisandefinisi fungsi yang benar:

char Ke_Besar(char C)

void Tampil_N(int N)

void Hapus_Layar()

void Hapus_Layar(void)

double Maksimum(double X, double Y)

Parameter formal adalah variabel yang adapada daftar parameter dalam definisi fungsi.

Parameter aktual adalah parameter yangdapat berupa variabel atau konstanta maupunungkapan yang dipakai dalam pemanggilanfungsi.

Suatu fungsi yang memberikan hasil balikselain tipe int perlu dideklarasikan sebelumdigunakan, karena jika suatu fungsi tidakdideklarasikan akan dianggap fungsi tersebutmemberikan nilai balik berupa tipe int.

Untuk alasan dokumentasi program yangbaik, sebaiknya semua fungsi yang digunakandideklarasikan terlebih dahulu termasuk yangbertipe int.

Beberapa kompiler C dapat diatur untukselalu mendeteksi semua deklarasi fungsi-fungsi yang digunakan termasuk yang bertipeint.

Deklarasi fungsi ditulis sebelum fungsitersebut digunakan.

Bentuk umum deklarasi fungsi:

tipe nama-fungsi(argumen);

Tipe adalah tipe dari fungsi yang akandigunakan dan harus sama dengan tipefungsi yang didefinisikan

/* ------------------------------------------------------------------------

Nama Program: ADP_fungsi_1_deklarasi_fungsi.cppMendeklarasikan Fungsi----------------------------------------------------

-------------------- */

#include <stdio.h>#include <stdlib.h>double Absolut(double X); //deklarasi fungsi

main(){

float Nilai;

printf("Contoh Program Mendeklarasikan Fungsi\n");printf("__________________________________\n");printf("\n");

Nilai = -123.45;printf("%7.2f nilai mutlaknya adalah %7.2f\n", Nilai,

Absolut(Nilai));printf("\n");

system("pause");}

//fungsi untuk memutlakkan nilai negatipdouble Absolut(double X) //definisi fungsi{

if(X<0) X=-X;return(X);

/* ------------------------------------------------------------------------

Nama Program: ADP_fungsi_1_deklarasi_fungsi.cppMendeklarasikan Fungsi----------------------------------------------------

-------------------- */

#include <stdio.h>#include <stdlib.h>//fungsi untuk memutlakkan nilai negatip//dimana fungsi dideklarasikan terlebih dahuludouble Absolut(double X) //definisi fungsi{

if(X<0) X=-X;return(X);

}

main(){

float Nilai;

printf("Contoh Program Mendeklarasikan Fungsi\n");printf("__________________________________\n");printf("\n");

Nilai = -123.45;printf("%7.2f nilai mutlaknya adalah %7.2f\n", Nilai,

Absolut(Nilai));printf("\n");

system("pause");}

Prototype fungsi adalah mendeklarasikanfungsi dengan menyebutkan argumenfungsinya.

Pada contoh program

ADP_fungsi_1_deklarasi_fungsi.cpp,prototype fungsi terdapat pada bagiandeklarasi fungsi dimana fungsi doubleAbsolut menyebutkan argumen fungsi(double X).

Suatu fungsi dibuat untuk maksudmenyelesaikan tugas tertentu.

Suatu fungsi dapat hanya melakukan suatu tugassaja tanpa memberikan suatu hasil balik ataumelakukan suatu tugas dan kemudianmemberikan suatu hasil balik.

Fungsi yang hanya melakukan suatu tugas sajatanpa memberikan hasil balik misalnya adalahfungsi untuk menampilkan hasil di layar.

/* --------------------------------------------------------------------------

Nama Program: ADP_fungsi_2_hasil_balik_fungsi.cppHasil Balik Fungsi-----------------------------------------------------------------------

---- */

#include <stdio.h>#include <stdlib.h>void Tampil_S_N(char *String, int N); //prototype fungsi

main(){

printf("Contoh Program Hasil Balik Fungsi\n");printf("_____________________________\n");printf("\n");

Tampil_S_N("Bahasa C\n",3);printf("\n");

system("pause");}

//fungsi menampilkan n kali nilai stringvoid Tampil_S_N(char *String, int N) //definisi fungsi{

int I;for(I=1;I<=N;I++) printf(String);

}

Fungsi Tampil_S_N() pada contoh di slidesebelumnya tidak memberikan hasil balik. Fungsiyang tidak memberikan hasil balik adalah fungsiyang mempunyai tipe hasil void.Jika suatu fungsi memberikan hasil balik,makanilai hasil balik yang diberikan oleh fungsidapat dilakukan oleh statemen return yangdiikuti oleh nilai hasil baliknya yang ditulis dalamtanda kurung. Statemen return saja tanpa diikutioleh nilai baliknya akan mengembalikan prosesdari fungsi kebagian program yangmemanggilnya tanpa memberikan nilai hasilbaliknya.

/* --------------------------------------------------------------------------

Nama Program: ADP_fungsi_2a_hasil_balik_fungsi.cppHasil Balik Fungsi-----------------------------------------------------------------------

---- */

#include <stdio.h>#include <stdlib.h>void Tampil_S_N(char *String, int N); //prototype fungsi

main(){

printf("Contoh Program Hasil Balik Fungsi\n");printf("_____________________________\n");printf("\n");

Tampil_S_N("Bahasa C\n",3);printf("\n");

system("pause");}

//fungsi menampilkan n kali nilai stringvoid Tampil_S_N(char *String, int N) //definisi fungsi{

int I;for(I=1;I<=N;I++) printf(String);return;

}

Program berikut ini dimaksudkan untukmenghitung N Faktorial (N!). Nilai N! adalahsebesar 1 x 2 x ... x N dengan N adalah nilaipositif. Jika N bernilai negatif atau nol,makafungsi faktorial() akan memberikan hasil baliknilai 0. Nilai F adalah hasil balik yang akandiberikan oleh fungsi untuk nilai N positif.Variabel F ini pertama kali harus diberikan nilaiawal 1. Jika nilai F mempunyai nilai awal 0, makahasilnya akan selalu nol, karena bilangan apapundikalikan dengan 0 hasilnya 0.

/* --------------------------------------------------Nama Program: ADP_fungsi_2b_hasil_balik_fungsi.cppHasil Balik Fungsi-------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>long int Faktorial(int N); //prototype fungsi

main(){

int N;long int Fak;

printf("Contoh Program Hasil Balik Fungsi\n");printf("_________________________________\n");printf("\n");

printf("Jumlah Faktorial: ");scanf("%d",&N);Fak = Faktorial(N);printf("%d faktorial = %ld\n",N,Fak);printf("\n");

system("pause");}

//fungsi menghitung N faktoriallong int Faktorial(int N) //definisi fungsi{

int I;long int F=1;if(N<=0)return(0);for(I=2;I<=N;I++) F *=I;return(F);

}

Program di atas memberikan nilai hasil balikdengan tipe long int. Tipe nilai hasil balikadalah tipe dari fungsinya, sehingga fungsiFaktorial() ini juga harus bertipe long int.Hubungan antara bagian program yangmemanggil fungsi, parameter aktual,parameter formal, dan hasil balik dari fungsidapat digambarkan seperti pada slideberikutnya.

Hasil dari fungsi Faktorial() ini,yaitu nilai dariF akan dtierima oleh variabel Fak di bagianprogram yang memanggil fungsi.

Variabel-variabel yang digunakan untukoperasi fungsi mempunyai ruang lingkuptertentu, yaitu apakah hanya berlaku di blokstatemen saja, di dalam suatu fungsi sajaataukah di semua bagian program.

Terdapat tiga macam variabel, yaitu variabellokal, global, atau statis.

Variabel Lokal adalah variabel yang nama dannilainya hanya dikenal di suatu blok statementertentu saja atau di dalam suatu fungsi.

Variabel bersifat lokal jika dideklarasikan didalam blok bersangkutan.

Variabel lokal akan dihapus dari memori jikaproses sudah meninggalkan blok statemendimana variabel lokal terletak.

/* ----------------------------------------------Nama Program: ADP_fungsi_3_variabel_fungsi.cppVariabel Lokal Fungsi---------------------------------------------- */

#include <stdio.h>#include <stdlib.h>float Tambah(float A, float B); //prototype fungsi

main(){

float Hasil;

printf("Contoh Program Variabel Lokal Fungsi\n");printf("____________________________________\n");printf("\n");

Hasil = Tambah(2,3);printf("%f\n", Hasil); //Hasil variabel lokal fungsi utamaprintf("\n");

system("pause");}

//fungsi menampilkan menghitung penambahanfloat Tambah(float A, float B) //definisi fungsi{

float C; //C variabel lokal fungsi TambahC = A + B;return(C);

}

Variabel C pada contoh program di atasmerupakan variabel lokal di fungsi Tambah().Variabel C ini tidak dikenal di fungsi main()(fungsi utama), sehingga variabel ini tidakdapat digunakan di fungsi utama. Sebaliknyavariabel Hasil merupakan variabel yangsifatnya lokal di fungsi utama dan tidakdikenal di fungsi Tambah().

Varibel Global adalah variabel yang dikenal disemua bagian-bagian tertentu dari program.Variabel-variabel global dapat dibuat dengancara mendeklarasikan di luar suatu blokstatemen atau di luar fungsi-fungsi yangmenggunakannya.

/* ----------------------------------------------Nama Program: ADP_fungsi_3_variabel_fungsi.cppVariabel Global Fungsi

---------------------------------------------- */

#include <stdio.h>#include <stdlib.h>float Tambah(float A, float B); //prototype fungsi

float C; //C variabel globalmain(){

printf("Contoh Program Variabel Global Fungsi\n");printf("_____________________________________\n");printf("\n");

Tambah(2,3);printf("%f\n",C);printf("\n");

system("pause");}

//fungsi menghitung penambahanfloat Tambah(float A, float B) //definisi fungsi{

C = A + B;return(C);

}

Variabel C dideklarasikan di luar fungsi utamadan fungsi Tambah(),sehingga bersifat global(dikenal dan dianggap sama) di kedua fungsitersebut. Karena bersifat global, makaperubahan nilai variabel C di salah satufungsi tersebut berarti juga merubah nilaivariabel C di fungsi yang lainnya.

Variabel statik bersifat tetap, yaitu tidak dihapusvariabel dan nilainya selama proses program.

Berbeda dengan variabel lokal, yaitu variabelnyaakan dihapus setelah proses keluar dari blokyang mendeklarasikannya, maka variabel statikakan tetap ada dan nilainya akan tetapdipertahankan walaupun proses telah keluar daribloknya.

Variabel statik dibuat dengan dideklarasikanmenggunakan pengubah dari (modifier) static.

/* ----------------------------------------------Nama Program: ADP_fungsi_5_variabel_fungsi.cpp

Variabel Statik Fungsi---------------------------------------------- */

#include <stdio.h>#include <stdlib.h>long int X(long int N); //prototype fungsi

main(){

int I, N;long int Fak;

printf("Contoh Program Variabel Statik Fungsi\n");printf("________________________________\n");printf("\n");

printf("Berapa Jumlah Faktorial: ");scanf("%d",&N);printf("\n");

//menghitung N faktorialif(N<=0) Fak=0;else

for(I=1;I<=N;I++) Fak=X(I);printf("%d faktorial = %ld\n", N, Fak);

system("pause");}

//fungsi Xlong int X(long int I) //definisi fungsi{

static long int F=I;

F = F * I;return(F);

}

Pengiriman paramater ke suatu fungsi dapatdilakukan dengan dua cara, yaitu pengirimansecara nilai (by value) atau secara acuan (byreference).

Pengiriman secara nilai yang dikirimkanadalah nilai, sedangkan pengiriman secaraacuan yang dikirimkan adalah alamat darinilainya.

Pengiriman parameter secara nilai mempunyai karakteristik:1. Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan

alamat memori letak dari datanya.2. Fungsi yang menerima kiriman nilai ini akan menyimpannya di

alamat yang terpisah dari nilai aslinya yang digunakan olehbagian program yang memanggil fungsi.

3. Karena alasan nomor 2 di atas, maka perubahan nilai di fungsitidak akan merubah nilai asli di bagian program yang memanggilfungsi walaupun keduanya menggunakan nama variabel yangsama.

4. Pengirimannya searah, artinya dari bagian program yangmemanggil fungsi ke fungsi yang dipanggil.

5. Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan,tidak hanya untuk sebuah variabel atau elemen larik ataukonstanta saja.

/* ----------------------------------------------------------------------------------------

Nama Program: ADP_fungsi_6_pengiriman_parameter_byvalue.cpp

Pengiriman Parameter Secara Nilai (by value)------------------------------------------------------

---------------------------------- */

#include <stdio.h>#include <stdlib.h>void Secara_Nilai(float A, float B, char C); //prototype fungsi

main(){

char C = 'a';float A = 25, *Alamat_A;

Alamat_A = &A;

printf("Contoh Program Pengiriman Parameter Secara Nilai\n");printf("__________________________________________\n");printf("\n");

Secara_Nilai(A, A/3, C);printf("Di fungsi utama setelah memanggil fungsi Secara_Nilai:

\n");printf("Nilai A adalah %f di alamat %p\n", A, Alamat_A);printf("Nilai A/3 adalah %f\n", A/3);printf("Nilai karakter C adalah %c\n", C);printf("\n");

system("pause");}

//fungsi Secara_Nilaivoid Secara_Nilai(float A, float B, char C) //definisi fungsi{

float *Alamat_A;Alamat_A = &A;

A = 7;

printf("Di fungsi Secara_Nilai: \n");printf("Nilai A adalah %f di alamat %p\n", A, Alamat_A);printf("Nilai B adalah %f\n", B);printf("Nilai karakter C adalah %c\n\n", C);

}

Dari hasil program contoh di atas dapat dijelaskan sebagai berikut:

1. Parameter-parameter aktual yang dikirimkan adalah nilai datanya,yaitu untuk variabel A, A/3 dan C sebagai berikut:

Secara_Nilai(A, A/3, C);

2. Variabel-variabel A dan C menempati memori berbeda untuk fungsiutama yang memanggil fungsi dan yang digunakan di fungsiSecara_Nilai(). Untuk fungsi utama, nilai variabel A disimpan di alamat0012FF50, sedang di fungsi Secara_Nilai(), nilai variabel A disimpan dialamat memori 0012FF38.

3. Perubahan nilai variabel A di fungsi Secara_Nilai() menjadi bernilai 7tidak merubah nilai variabel A di fungsi utama yang akan tetapbernilai 25.

4. Pengiriman suatu nilai merupakan pengiriman satu arah sepertiterlihat berikut ini

5. Pengiriman secara nilai dapat mengirimkan suatu ungkapan, yaitu A/3

Pengiriman parameter secara acuan mempunyaikarakteristik:

1. Yang dikirimkan ke fungsi adalah alamat letak dari nilaidatanya, bukan nilai dari datanya.

2. Fungsi yang menerima kiriman alamat ini akanmenggunakan alamat yang sama untuk mendapatkannilai datanya.

3. Karena alasan nomor 2 di atas, maka perubahan nilai difungsi akan merubah nilai asli di bagian program yangmemanggil fungsi.

4. Pengiriman parameter secara acuan adalah pengirimandua arah, yaitu dari bagian program yang memanggilfungsi ke fungsi yang dipanggil dan sebaliknya.

5. Pengiriman secara acuan tidak dapat dilakukan untuksuatu ungkapan, hanya untuk sebuah variabel atauelemen larik atau konstanta saja.

/* ----------------------------------------------------------------------------------------------

Nama Program: ADP_fungsi_7_pengiriman_parameter_byreference.cpp

Pengiriman Parameter Secara Acuan (by reference)------------------------------------------------------

------------------------------------- */

#include <stdio.h>#include <stdlib.h>void Secara_Acuan(float *A, float B, char *C); //prototype fungsi

main(){

char C = 'a';float A = 25, *Alamat_A;

Alamat_A = &*A;

printf("Contoh Program Pengiriman Parameter Secara Reference\n");

printf("____________________________________________________\n");printf("\n");

Secara_Acuan(&A, A/3, &C);printf("Di fungsi utama setelah memanggil fungsi Secara_Acuan:

\n");printf("Nilai A adalah %f di alamat %p\n", A, Alamat_A);printf("Nilai A/3 adalah %f\n", A/3);printf("Nilai karakter C adalah %c\n", C);printf("\n");

system("pause");}

//fungsi Secara_Acuanvoid Secara_Acuan(float *A, float B, char *C) {

float *Alamat_A;Alamat_A = &A;

*A = 7;

printf("Di fungsi Secara_Acuan: \n");printf("Nilai A adalah %f di alamat %p\n", *A, Alamat_A);printf("Nilai B adalah %f\n", B);printf("Nilai karakter C adalah %c\n\n", *C);

}

Pengiriman parameter secara acuan adalah pengirimanalamat dari nilai datanya dan telah diketahui bahwa alamatdari suatu nilai data dapat diperoleh denganmenggunakan operator ‘&’ seperti tampak di parameter-parameter aktual untuk variabel A dan C. Parameter aktualA/3 dikirimkan secara nilai, karena pengiriman secaraacuan tidak dapat menggunakan suatu ungkapan. Karenayang dikirimkan adalah alamatnya, maka parameter-parameter formal di definisi fungsi harus dalam bentukpointer. Variabel pointer dapat dideklarasikan denganmenuliskan nama variabelnya diawali dengan asterik (‘*’).Hubungan antara parameter aktual dan parameter formaladalah hubungan dua arah seperti berikut:

Karena hubungan dua arah ini, maka perubahannilai di fungsi akan mengakibatkan perubahannilai di bagian program yang memanggilnya. Dicontoh program

ADP_fungsi_7_pengiriman_parameter_byreference.cpp, nilai di alamat variabel Adirubah dengan nilai 7 di fungsiSecara_Acuan(). Akibatnya nilai variabelA di fungsi utama juga berubah dari nilai25 menjadi 7.

ContohADP_fungsi_7a_pengiriman_parameter_byreference.cpp berikut ini menunjukkan dengan jelasbahwa perubahan nilai di fungsi untuk parameteryang dikirimkan secara acuan akan merubah juganilai di bagian program yang memanggilnya. Karenasifat dua arah ini, maka pengiriman parameter secaraacuan dapat juga dipakai sebagai pengganti hasilbalik dari fungsi. Di contoh ini, parameter aktual Cakan mengirimkan alamatnya ke fungsi Tambah().Setelah proses dari fungsi Tambah() selesai, alamatini akan berisi dengan hasil proses fungsi, sehinggadapat digunakan di bagian program yangmemanggilnya sebagai hasil yang diperoleh darifungsi yang dipanggil.

/* ---------------------------------------------------------------------------------------------------

Nama Program: ADP_fungsi_7a_pengiriman_parameter_byreference.cppPengiriman Parameter Secara Acuan (by reference)----------------------------------------------------------------------------

----------------------- */

#include <stdio.h>#include <stdlib.h>void Tambah(int *A, int *B, int *C); //prototype fungsi

main(){

int A = 2, B = 3, C;

printf("Contoh Program Pengiriman Parameter Secara Reference\n");printf("_______________________________________________\n");printf("\n");

Tambah(&A, &B, &C);printf("%d di tambah %d adalah %d\n", A, B, C);printf("\n");

system("pause");}

//fungsi Secara_Acuanvoid Tambah(int *A, int *B, int *C) //definisi fungsi{

*C = *A + *B;return;

/* ---------------------------------------------------------------------------------------------------

Nama Program: ADP_fungsi_7b_pengiriman_parameter_byreference.cppPengiriman Parameter Secara Acuan (by reference)----------------------------------------------------------------------------

----------------------- */

#include <stdio.h>#include <stdlib.h>int *Tambah(int *A, int *B); //prototype fungsi

main(){

int A = 2, B = 3, *C;

printf("Contoh Program Pengiriman Parameter Secara Reference\n");printf("____________________________________________________\n");printf("\n");

C = Tambah(&A, &B);printf("%d di tambah %d adalah %d\n", A, B, *C);printf("\n");

system("pause");}

//fungsi Secara_Acuanint *Tambah(int *A, int *B) //definisi fungsi{

int Hasil;Hasil = *A + *B;return(&Hasil);

Contoh programADP_fungsi_7a_pengiriman_parameter_byreference.cppdapat juga dirubah dengan hasil balik dari fungsi yangmerupakan hasil balik berupa suatu pointer yangdikirimkan dengan statemen return.Di fungsi Tambah(), hasil yang dikirimkan adalahberupa alamat dari variabel Hasil. Alamat dari variabelini ditunjukkan oleh &Hasil. Dengan demikian, fungsiTambah() ini harus dideklarasikan dengan bentukpointer dengan cara nama dari fungsinya ditulis diawalioleh asterik (‘*’). Di bagian program yang memanggilfungsi, hasil dari fungsi ini juga harus diterima olehsuatu variabel pointer, yaitu C yang sudah harusdideklarasikan sebagai variabel pointer.

Dengan pengiriman secara parameter (secara nilaiatau acuan), maka variabel-variabel yang dikirimkantidak perlu dideklarasikan lagi di fungsi yangmenerimanya. Di contoh programADP_fungsi_6_pengiriman_parameter_byvalue.cpp, parameter aktual A, A/3, dan Cdikirimkan dan akan diterima olehparameter-parameter formal A, B, dan C. Didefinisi fungsi, parameter-parameter formalini telah dideklarasikan yang masing-masingbertipe float, float, dan char. Nama-namaparameter formal dapat berbeda dengannama-nama parameter aktualnya.

Rekursi (recursion) adalah suatu proses darifungsi yang memanggil dirinya sendiri secaraberulang-ulang.

Karena proses dilakukan berulang-ulang,maka harus ada suatu kondisi yangmengakhiri prosesnya. Jika tidak, makaproses tidak akan pernah berhenti sampaimemori yang digunakan tidak dapatmenampung lagi.

/* ----------------------------------------------Nama Program: ADP_rekursi.cppRekursi---------------------------------------------- */

#include <stdio.h>#include <stdlib.h>void Terus_Tidak_Berhenti(void); //prototype fungsi

main(){

printf("Contoh Program Rekursi\n");printf("______________________\n");printf("\n");

Terus_Tidak_Berhenti();printf("\n");

system("pause");}

//fungsi menampilkan hasil terus tidak berhentivoid Terus_Tidak_Berhenti(void) //definisi fungsi{

printf("Ctrl-Break untuk berhenti\n");Terus_Tidak_Berhenti();

}

Contoh program ADP_rekursi.cpp di atasmerupakan program rekursi yang tidakakan berhenti karena tidak mempunyaikondisi yang menghentikan prosesnya.Proses rekursi ini ditunuukkan olehstatemen Terus_Tidak_Berhenti(), yaituproses yang memanggil fungsi dirinyasendiri (perhatikan bahwa statemen iniberada di dalam fungsi yang dipanggil).

/* -------------------------------------------------Nama Program: ADP_rekursi_1.cppRekursi-------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>void Berhenti_N_Kali(int N); //prototype fungsi

main(){

int N=3;

printf("Contoh Program Rekursi\n");printf(“____________________\n");printf("\n");

Berhenti_N_Kali(N);printf("\n");

system("pause");}//fungsi menampilkan hasil sebanyak N Kalivoid Berhenti_N_Kali(int N) //definisi fungsi{

static int I=0;

if(N<=0)return;printf("%d kali\n", ++I);Berhenti_N_Kali(N-1);

}

Proses rekursi di program ADP_rekursi_1.cppmempunyai kondisi pengakhiran rekursi, yaitujika nilai N sudah lebih kecil atau sama dengannol. Setiap kali fungsi memanggil dirinya sendiri,nilai dari N dikurangi dengan nilai 1, sehingganilai N akhirnya akan menjadi nol dan prosesrekursi akan diakhiri, sehingga fungsi ini akanmemanggil dirinya sendiri sebanyak N kali.

/* ------------------------------------------------Nama Program: ADP_rekursi_2.cppRekursi------------------------------------------------ */

#include <stdio.h>#include <stdlib.h>long int Fak_Rekursi(int N); //prototype fungsi

main(){

int N=5;

printf("Contoh Program Rekursi\n");printf(“____________________\n");printf("\n");

printf("%d faktorial = %ld\n", N, Fak_Rekursi(N));printf("\n");system("pause");

}//fungsi rekursi menghitung N Faktoriallong int Fak_Rekursi(int N) //definisi fungsi{

long int F;

if(N<=1)return(1);else{

F = N * Fak_Rekursi(N-1);return(F);

}}

Proses rekursi di program ADP_rekursi_2.cpp dapat dijelaskan sebagaiberikut:

1. Fungsi utama memanggil fungsi Fak_Rekursi() dengan mengirimkan nilai 5untuk parameter aktual N, yang maksudnya akan dilakukan perhitungansebanyak 5 faktorial.

2. Jika nilai dari N pertama kali yang diberikan oleh fungsi utama bernilaikurang atau sama dengan satu, maka hasil faktorial yang akan diberikanadalah bernilai 1.

3. Jika nilai N pertama kali yang diberikan oleh fungsi utama lebih besar dari 1,maka proses rekursi yang pertama adalah:

F = 5 * Fak_Rekursi(4);Proses ini akan memanggil kembali fungsi dirinya sendiri denganmengirimkan nilai sebagai nilai N yang baru. Karena nilai N masih lebihbesar dari 1, maka proses rekursi ke dua akan dilakukan dengan hasilnyaadalah 4 * Fak_Rekursi(3). Untuk N adalah 3, hasil yang diperoleh olehrekursi adalah 3 * Fak_Rekursi(2) dan seterusnya sampai nilai N adalah 1.Untuk nilai N sama dengan 1 ini, statemen return(1) akan mengembalikanproses ke bagian yang memanggilnya, yaitu statemen setelah statemen F =5 * Fak_Rekursi(N-1). Statemen return(F) kemudian baru mengembalikanproses ke fungsi utama. Hasil akhirs nilai F dari penjelasan di atas untuk 5faktorial dapat dituliskan seperti di slide berikut:

Kristanto, Andri. (2009). Algoritma &Pemrograman dengan C++ Edisi 2.Yogyakarta. Graha Ilmu.

Hartono, Jogiyanto, MBA., Ph.D. (2002).Konsep Dasar Pemrograman Bahasa C.Yogyakarta. Andi.

algoritma dan dasar pemrograman

Larik adalah kumpulan dari nilai-nilai bertipesama dalam urutan tertentu yangmenggunakan sebuah nama yang sama.

Nilai-nilai di suatu larik disebut denganelemen-elemen larik.

Letak urutan dari suatu elemen larikditunjukkan oleh suatu subscript atau suatuindex.

Larik dapat berdimensi satu, dua, tiga, ataulebih.

Larik dimensi satu (one-dimensional array)mewakili bentuk suatu vektor.

Larik dimensi dua (two-dimensional array)mewakili bentuk dari suatu matrik atau tabel.

Larik dimensi tiga (three-dimensional array)mewakili bentuk suatu ruang.

Larik dideklarasikan dengan menyebutkan jumlahdari elemennya yang ditulis di antara tanda ‘[]’.Contohnya:int X[5]; //larik dimensi satu dengan nama X yang

dideklarasikan dengan tipe data int yangmempunyai 5 buah elemen.

Elemen-elemen dari larik X ini adalah:X[0], X[1], X[2], X[3], dan X[4]Misalkan suatu variabel integer I bernilai 3, makavariabel ini dapat digunakan sebagai indeks dari larik,yaitu X[I] yang berarti menunjukkan elemen larik ke –4 atau X[3].Untuk Bahasa C, elemen pertama dari suatu larikdimulai dengan indeks nol.

Deklarasi dapat juga langsung dengan memberikan nilai-nilai awal elemen lariknya. Misalnya Vektor X berikut ini:X = {5, 3, 7}Vektor ini dapat dideklarasikan sebagai larik dimensi satudengan jumlah elemen 3 dengan nilai-nilai elemennya 5,3, dan 7, seperti berikut ini:int X[3] = {5, 3, 7};Nilai-nilai elemen larik ini adalah:X[0] bernilai 5X[1] bernilai 3X[2] bernilai 7Misalnya nilai elemen ke – 1 akan dikalikan dengan nilaielemen ke – 3, maka dapat ditulis X[0] * X[2] denganhasilnya adalah 35.

Perbedaan utama antara larik dengan variabelbiasa adalah sebuah larik dapat mempunyaisejumlah nilai, sedangkan sebuah variabel biasahanya dihubungkan dengan sebuah nilai saja.Misalnya terdapat tiga buah nilai, yaitu 8, 5, dan7. Jika nilai-nilai ini akan dihubungkan dengansebuah nama saja, maka dapat digunakansebuah larik. Jika digunakan variabel untukmenyimpan nilai-nilai tersebut, maka harusdigunakan tiga buah variabel dengan nama-nama yang berbeda, misalnya variabel X1 untukmenyimpan nilai 8, variabel X2 untuk nilai 5, danvariabel X3 untuk nilai 7.

/* ----------------------------------------------------Nama Program: ADP_Larik_1.cppPerbedaan Larik dengan Variabel Biasa------------------------------------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){

float X1=5, X2=3, X3=7, Total;

printf("Contoh Program Menghitung Tiga Buah Nilai\n");printf("yang Disimpan pada Tiga Variabel\n");printf("____________________________________\n");printf("___________________________\n");printf("\n");

Total = X1 + X2 + X3;printf("Total = %.2f\n", Total);printf("\n");

system("pause");}

Contoh ADP_Larik_2.cpp pada slidesebelumnya hanya praktis jika digunakanuntuk menjumlahkan nilai dari 3 variabelsaja. Tetapi jika jumlah variabel yang akandijumlahkan > 3, misalnya 1000, maka akanlebih jika menggunakan larik untuk mewakilinilai-nilai tersebut, seperti terlihat padacontoh berikut ini.

/* ----------------------------------------------------Nama Program: ADP_Larik_2.cppPerbedaan Larik dengan Variabel Biasa------------------------------------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){

float X[3]={5,3,7}, Total=0;int I;

printf("Contoh Program Menghitung Tiga Buah Nilai ");printf("yang Disimpan pada Tiga Variabel\n");printf("____________________________________");printf("___________________________\n");printf("\n");

for(I=0;I<=2;I++) Total = Total + X[I];printf("Total = %.2f\n", Total);printf("\n");

system("pause");}

Dalam mendeklarasikan larik denganmemberikan nilai-nilai elemen awalnya,jumlah dari elemen larik dapat ditulis ‘[]’.Larik seperti ini disebut dengan larik yangtidak berukuran.

Perhatikan contoh pada slide berikut dimanalarik dimensi satu X yang mempunyai nilai-nilai elemen 5, 2, dan 7 dideklarasikandengan tidak berukuran.

/* ---------------------------------------------Nama Program: ADP_Larik_3.cppInisialisasi Larik Tidak Berukuran--------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

float X[]={5,3,7}, Total=0;int I;

printf("Contoh Program Inisialisasi Larik Tidak Berukuran\n");printf("________________________________________\n");printf("\n");

for(I=0;I<=2;I++) Total = Total + X[I];printf("Total = %.2f\n", Total);printf("\n");

system("pause");}

Untuk larik tidak berukuran ini, bahasa Cakan secara otomatis menentukan ukuran(jumlah elemen dari lariknya) tergantung darijumlah nilai-nilai elemen yang diberikansewaktu deklarasi.

Pada contoh di slide sebelumnya jumlahnilai-nilai elemen yang diberikan adalahsebanyak 3 buah, sehingga larik X tersebutdapat juga dikatakan mempunyai 3 buahelemen.

Permasalahan sering kali muncul jikaprogramer belum mengetahui jumlah darielemen-elemen lariknya.

Permasalahan seperti ini sering terjadi untuksuatu program yang menggunakan suatularik dengan jumlah elemennya ditentukanoleh pemakai program, atau dengan kata lain,jumlah elemen dari larik tidak ditentukan didalam program, tetapi ditentukan setelahprogram dijalankan.

Untuk mengatasi permasalahan seperti ini, jumlahelemen dari larik dapat ditentukan terlebih dahulu didalam program secara maksimum dengan batasanmemori yang digunakan masih mencukupi. Misalnyajumlah elemen dari larik ditentukan terlebih dahulusebesar 1000 buah. Pemakai program kemudianditanyakan jumlah elemen larik yang sebenarnyadengan batasan jumlah elemen maksimumnya adalahsebanyak yang telah ditentukan di dalam program.Misalny pemakai program hanya menggunakansebanyak 200 elemen larik saja, maka sisi elemenyang telah ditentukan di dalam program tidak akandigunakan, walaupun sudah “dipesankan” tempatnyadi dalam memori.

Program berikut ini akan menghitung nilaitotal, rata-rata dan deviasi standar(penyimpangan baku atau standarddeviation) dari sejumlah nilai data.

Program ini mengijinkan pemakai programuntuk menentukan jumlah dari data. Jumlahdari data ini menunjukkan jumlah darielemen.

/* -----------------------------------------------Nama Program: ADP_Larik_4.cppInisialisasi Larik Tidak Berukuran-----------------------------------------------

*/

#include <stdio.h>#include <math.h>#include <stdlib.h>

main(){

int N, I;float X[1000], Total=0, Rata, Xi_Rata_2=0, SD;

printf("Contoh Program Untuk Menghitung Nilai Rata-rata ");

printf("dan deviasi standar\n");printf("_________________________________________");printf("___________________\n");printf("\n");

//Masukan jumlah dari dataprintf("Masukkan Jumlah Data (Maksiumum 1000

buah): ");scanf("%d", &N);printf("\n");

//Masukan nilai data ke 0 sampai dengan ke N-1//dan hitung nilai totalnyafor(I=0;I<N;I++){

printf("Nilai Data ke - %d : \n",I+1);scanf("%f", &X[I]);Total = Total + X[I];

}

//Hitung nilai rata-ratanyaRata = Total / N;

//Hitung Nilai (Xi - Rata)^2for(I=0;I<N;I++)

Xi_Rata_2 += ((X[I] - Rata) * (X[I] - Rata));

//Hitung Deviasi StandarSD = sqrt(Xi_Rata_2 / N);

//Tampilkan hasilprintf("\n");printf("Jumlah Data : %d\n", N);printf("Total Nilai : %.2f\n", Total);printf("Rata-rata Nilai : %.2f\n", Rata);printf("Deviasi Standar : %.2f\n", SD);

system("pause");}

Program berikut untuk menampikan bilangandari 1 sampai bilangan 10, denganpangkatnya masing-masing. Batas nilaimaksimum yang disimpan adalah 100.

/* ------------------------------------------

Nama Program: ADP_Larik_5_Dimensi_Satu.cppLarik Dimensi Satu

------------------------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){

int square[100];int I;int K;

printf("Contoh Program Perhitungan Perpangkatan\n");

printf("_________________________________________");

printf("\n");

//Penghitungan perpangkatanfor(I=0;I<10;I++){

K = I + 1;square[I] = K*K;

printf("\nPangkat dari %d adalah %d", K, square[I]);

}

printf("\n");

Program berikut untuk menunjukkanbagaiman suatu larik dimensi duadideklarasikan dan ditampilkan nilai-nilaielemennya dalam bentuk matrik.

/* ----------------------------------------------------------------

Nama Program: ADP_Larik_6_Dimensi_Dua.cppLarik Dimensi Dua----------------------------------------

------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){

int I,J;float X[3][4] = {

10.00, 20.00, 30.00, 40.00,15.55, 25.55, 35.55, 45.55,25.00, 35.00, 45.00, 55.00

};

printf("Contoh Program Larik Dimensi Dua\n");printf("____________________________\n");printf("\n");

//Menampilkan dalam bentuk matrikfor(I=0;I<3;I++){

for(J=0;J<4;J++) printf("%8.2f", X[I][J]);printf("\n");

}

printf("\n");system("pause");

}

Program berikut untuk menghitung perkaliandua buah matrik, dimana perkalian dua buahmatrik dapat dilakukan jika banyaknya kolommatrik pertama adalah sama denganbanyaknya baris matrik yang kedua.

/* --------------------------------------------------------------------

Nama Program: ADP_Larik_6a_Dimensi_Dua.cppLarik Dimensi Dua-----------------------------------------------

--------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int I,J,K, Baris_A,Kolom_A,Kolom_B;int

Matrik_A[100][100],Matrik_B[100][100],Matrik_C[100][100];

printf("Contoh Program Perkalian Matrik\n");printf("_______________________________\n");printf("\n");

//Memasukkan orde matrikprintf("Masukkan Jumlah Baris Matrik A: ");scanf("%d",&Baris_A);printf("Masukkan Jumlah Kolom Matrik A: ");scanf("%d",&Kolom_A);printf("\n");printf("Masukkan Jumlah Kolom Matrik B: ");scanf("%d",&Kolom_B);printf("\n");

//Memasukkan data Matrik Aprintf("Masukkan Nilai Matrik A:\n");for(I=0;I<Baris_A;I++){

for(J=0;J<Kolom_A;J++){printf("Matrik A[%3d,%3d]: ", I+1,J+1);scanf("%d",&Matrik_A[I][J]);

}

//Memasukkan data Matrik Bprintf("Masukkan Nilai Matrik B:\n");for(J=0;J<Kolom_A;J++){

for(K=0;K<Kolom_B;K++){printf("Matrik B[%3d,%3d]: ", J+1,K+1);scanf("%d",&Matrik_B[J][K]);

}printf("\n");

}

//Menghitung Matrikk C hasil perkalian Matrik A & Matrik B

for(I=0;I<Baris_A;I++){for(K=0;K<Kolom_B;K++){

Matrik_C[I][K] = 0;for(J=0;J<Kolom_A;J++)Matrik_C[I][K] += Matrik_A[I][J] *

Matrik_B[J][K];}

}

//Menampilkan hasil perkalian matrikprintf("Hasil perkalian matrik: \n");for(I=0;I<Baris_A;I++){

for(K=0;K<Kolom_B;K++)printf("%7d",Matrik_C[I][K]);

printf("\n");}printf("\n");system("pause");

}

Program berikut ini menunjukkan deklarasisuatu larik string dimensi satu yang dibentukdari larik karakter berdimensi dua (perhatikanbahwa deklarasi ini menggunakan tipe char)dan fungsi printf() yang menampilkanlariknya menggunakan kode format “%c”.

/* ----------------------------------------------------------------

Nama Program: ADP_Larik_7_Larik_String.cppLarik String-----------------------------------------------

----------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int I,J;char Hari[7][10]={

"Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"

};

printf("Contoh Program Larik String Dimensi Satu\n");printf("__________________________________\n");printf("\n");

for(I=0;I<7;I++){for(J=0;J<10;J++){

printf("%c", Hari[I][J]);printf("\n");}

}

system("pause");}

Program berikut ini menunjukkan deklarasisuatu larik string dimensi satu yang tetapakan ditampilkan sebagai larik string dimensisatu, sehingga fungsi printf() yang akanmenampilkannya menggunakan kode format“%s”.

/* ------------------------------------------------------------------

Nama Program: ADP_Larik_7a_Larik_String.cppLarik String-----------------------------------------------

------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int I;char Hari[7][10]={

"Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"

};

printf("Contoh Program Larik String Dimensi Satu\n");printf("__________________________________\n");printf("\n");

for(I=0;I<7;I++){printf("%s", Hari[I]);

printf("\n");}

printf("\n");system("pause");

}

Program berikut ini menunjukkan bagaimanalarik string dimensi dua (larik karakterdimensi tiga) dideklarasikan dan ditampilkan.

/* ------------------------------------------------------------------

Nama Program: ADP_Larik_7b_Larik_String.cppLarik String-----------------------------------------------

------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int I,J;char Nama[3][5][15]={

"Retno", "Aulia", "Risang", "Feyzar", "Pamungkas","Lisa", "Desi", "Agung", "Galih", "Kamilus",

"Hafiza", "Meli", "Ulfa", "Agung", "Irfan",};

printf("Contoh Program Larik String Dimensi Dua\n");printf("__________________________________\n");printf("\n");

for(I=0;I<3;I++){printf("Mahasiswa di kelas %ld adalah: \n", I+1);for(J=0;J<5;J++)

printf("%s\n",Nama[I][J]);printf("\n");

}

printf("\n");system("pause");

}

Untuk larik-larik string, seringkali panjangdari nilai-nilai stringnya satu dengan yanglainnya tidak sama (misalnya nilai string“Minggu” tidak sama panjangnya dengan nilaistring “Senin”), sehingga jika dideklarasikandengan panjang yang maksimum, maka akanmemboroskan tempat memori. Untukmengatasi masalah ini, dapat digunakaninisialisasi larik tak berukuran.

/* ------------------------------------------------------------------

Nama Program: ADP_Larik_7c_Larik_String.cppLarik String------------------------------------------------------------

------ */

#include <stdio.h>#include <stdlib.h>

main(){

int I;char Hari[][10]={

"Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu",

};

printf("Contoh Program Inisialisasi Larik String Tak Berukuran\n");printf("___________________________________________\n");printf("\n");

for(I=0;I<7;I++){printf("%s\n",Hari[I]);

}

printf("\n");system("pause");

}

Kristanto, Andri. (2009). Algoritma &Pemrograman dengan C++ Edisi 2.Yogyakarta. Graha Ilmu.

Hartono, Jogiyanto, MBA., Ph.D. (2002).Konsep Dasar Pemrograman Bahasa C.Yogyakarta. Andi.

ALGORITMA DAN

DASAR PEMROGRAMAN

Pointer (variabel penunjuk)adalah suatu variabel yangberisi dengan alamat lokasisuatu memori tertentu.

Jadi suatu pointer bukan berisidengan suatu nilai data, tetapiberisi suatu alamat.

Misalnya, X adalah suatu variabel yang berisi nilai‘J’. X bukan variabel penunjuk. Nilai dari X inioleh kompiler C akan diletakkan di suatu lokasimemori tertentu. Nilai ini dapat diakses jikadiketahui alamat memorinya. Alamat dari nilai Xini dapat diketahui dari ungkapan &X. Misalnyaalamat dari nilai X ini akan disimpan di suatuvariabel, maka dapat dituliskan sebagai Alamat_X= &X. Alamat_X adalah variabel pointer, ataudisebut dengan pointer ke X, karena variabel inimenunjukkan ke lokasi di mana nilai X disimpan.

/* --------------------------------------------Nama Program: ADP_Pointer_1.cppLarik String--------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

char *Alamat_X, X;

printf("Contoh Program Pointer\n");printf("______________________\n");printf("\n");

X = 'J';Alamat_X = &X;printf("Nilai dari Variabel X, adalah %c berada di alamat %p\n", X,Alamat_X);

printf("\n");system("pause");

}

Bahasa C menyediakan dua buah operator untukoperasi pointer, yaitu ‘*’ dan ‘&’. Kedua operatorini adalah operator unary.

Operator alamat ‘&’ digunakan untukmendapatkan alamat memori dari operandnya.

Operator ‘*’ digunakan untuk mendapatkan nilaidari operandnya. Operand untuk operator ‘*’adalah variabel pointer, dengan kata lain,operator ‘*’ digunakan untuk mendapatkan nilaiyang berada di alamat memori yang ditunjukkanoleh variabel pointer

/* ---------------------------------------------------------Nama Program: ADP_Pointer_2_Operator.cppLarik String--------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

char *Alamat_X,X,Y,Z;

printf("Contoh Program Operator Pointer\n");printf("_______________________________\n");printf("\n");

X = 'J';Alamat_X = &X;Y = X;Z = *Alamat_X;printf("Nilai Variabel X adalah %c\n", X);printf("Nilai Variabel Y adalah %c\n", Y);printf("Nilai Variabel Z adalah %c\n", Z);printf("Nilai Variabel X berada di alamat %p\n", Alamat_X);

printf("\n");system("pause");

}

Variabel pointer dideklarasikan dengan namavariabelnya ditulis dengan diawali karakterasterik ‘*’.

Bentuk umum deklarasi variabel pointer iniadalah:

tipe *nama-variabel-pointer;

Variabel pointer yang dideklarasikan dapatjuga langsung diberi nilai awal.

/* -----------------------------------------Nama Program: ADP_Pointer_3_Deklarasi.cppLarik String----------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

float Nilai, *Alamat=&Nilai;

printf("Contoh Program Deklarasi Pointer\n");printf("________________________________\n");printf("\n");

Nilai = 100.00;

printf("Nilai %8.2f berada di alamat memori %p\n", Nilai, Alamat);

printf("\n");system("pause");

}

Terdiri dari

1. Operasi Pengerjaan

2. Operasi Aritmatika

3. Operasi Logika

Suatu variabel pointer dapatdikerjakan ke variabelpointer lainnya, yaitu nilaisuatu variabel pointer dapatdipindahkan ke variabelpointer yang lainnya.

/* ---------------------------------------------------------------------------

Nama Program: ADP_Pointer_4_Operasi_Pengerjaan.cppOperasi Pengerjaan Pointer---------------------------------------------------------

------------------ */

#include <stdio.h>#include <stdlib.h>

main(){

float Y, *X1, *X2;

printf("Contoh Program Operasi Pengerjaan Pointer\n");printf("_________________________________________\n");printf("\n");

Y = 150,97;X1 = &Y;X2 = X1; //Pengerjaan variabel pointer

printf("Nilai variabel Y ada di alamat %p\n", X1);printf("Nilai variabel Y ada di alamat %p\n", X2);

printf("\n");system("pause");

}

Variabel pointer dapat dilakukan operasiaritmatika, namun hanya untuk operasipenambahan dan pengurangan, sedangkanoperasi yang lain seperti perkalian,pembagian, dan pemangkatan jarangdilakukan, karena kurang berguna untukvariabel pointer ini.Penambahan dan pengurangan yang dapatdilakukan untuk variabel pointer ini hanyadengan suatu nilai integer saja, sedangkannilai yang lain tidak dapat dilakukan.

Program berikut ini akan menampilkan 10buah data yang masing-masing mempunyaialamat yang berbeda-beda.

/* -------------------------------------------------------------------------

Nama Program: ADP_Pointer_5_Operasi_Aritmatika.cppOperasi Aritmatika Pointer

-------------------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int I[10], *I_pointer;double F[10], *F_pointer;int x;

printf("Contoh Program Operasi Aritmatika Pointer\n");printf("________________________________________\n");printf("\n");

I_pointer = I;F_pointer = F;

for(x=0;x<10;x++)printf("%p %p\n", I_pointer+x, F_pointer+x);

printf("\n");system("pause");

Program berikut ini penambahan danpengurangan variabel pointer dengan variabelpointer lainnya.

P_Awal adalah variabel pointer yangmenunjuk ke alamat memori letak elemenlarik yang pertama dan P_Akhir adalahvariabel pointer yang menunjuk ke alamatletak elemen larik yang terakhir. Selisih darikedua nilai ini adalah nilai integer 4 yangmenunjukkan jumlah dari elemen lariknya.

/* ---------------------------------------------------Nama Program: ADP_Pointer_5a_Operasi_Aritmatika.cppOperasi Aritmatika Pointer--------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int *P_Awal, *P_Akhir;int X[5] = {20, 40, 60, 80, 100}, I;int x;

printf("Contoh Program Operasi Aritmatika Pointer\n");printf("_________________________________________\n");printf("\n");

P_Awal = &X[0];P_Akhir = &X[4];

printf("Alamat dari nilai elemen awal X[0] adalah %p\n", P_Awal);printf("Alamat dari nilai elemen akhir X[4] adalah %p\n", P_Akhir);printf("Dari X[0] ke X[4] ada sebanyak %d elemen\n\n", P_Akhir-P_Awal);

for(I=0;I<=4;I++){printf("Nilai elemen ke %d adalah %d di alamat %p\n", I,X[I],P_Awal);

P_Awal = P_Awal + 1;}

printf("\n");system("pause");

}

Operasi logika pada pointer adalah untukmembandingkan dua buah nilai dari variabelpointer dengan menggunakan operatorhubungan seperti !=, ==, <, dan >.

Variabel pointer yang dapat dibandingkanjika keduanya mempunyai tipe yang samaatau keduanya bernilai null.

/* --------------------------------------------------------------------Nama Program: ADP_Pointer_6_Operasi_Logika.cppOperasi Logika Pointer-------------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int Nilai1=100, Nilai2=100, *P_Nilai1, *P_Nilai2, *P_Nilai3;

printf("Contoh Program Operasi Logika Pointer\n");printf("_____________________________________\n");printf("\n");

P_Nilai1 = &Nilai1;P_Nilai2 = &Nilai2;P_Nilai3 = P_Nilai1;

if(P_Nilai1<P_Nilai2) printf("P_Nilai1 menunjuk ke memori lebih rendah dari P_Nilai2\n");if(P_Nilai1==P_Nilai2) printf("P_Nilai1 menunjuk ke memori yang sama dengan P_Nilai2\n");if(P_Nilai1>P_Nilai2) printf("P_Nilai1 menunjuk ke memori yang lebih tinggi dari P_Nilai2\n");

if(P_Nilai1<P_Nilai3) printf("P_Nilai1 menunjuk ke memori lebih rendah dari P_Nilai3\n");if(P_Nilai1==P_Nilai3) printf("P_Nilai1 menunjuk ke memori yang sama dengan P_Nilai3\n");if(P_Nilai1>P_Nilai3) printf("P_Nilai1 menunjuk ke memori yang lebih tinggi dari P_Nilai3\n");

printf("\n");system("pause");

}

Pointer dan larik mempunyai hubunganantara lain dalam hal pengaksesan nilai-nilaielemen lariknya.Hal tersebut dapat dilihat pada contohprogram berikut ini, dimana untukpengaksesan elemen-elemen larik yang urutmulai elemen ke-1 sampai ke-n dapat ditulissebagai *(P+0), *(P+1), *(P+2), sampai ke*(P+n). Karena peningkatannya adalah 1,maka penulisan tersebut dapat juga ditulissebagai *P++.

/* -----------------------------------------------------------------Nama Program: ADP_Pointer_6_Operasi_Larik.cppOperasi Pointer Untuk Larik----------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int *P, X[7] = {10,20,30,40,50,60,70};int I;

printf("Contoh Program Mengakses Elemen Larik Menggunakan Pointer\n");printf("_________________________________________________________\n");printf("\n");

P = X;

printf("Elemen Alamat Nilai\n");

for(I=0;I<7;I++)printf("%4d P+%ld=%p; X+%ld=%p; &X[%ld]=%p x[%d]=%2d;"\

"*(P+%ld)=%2d; *(X+%ld)=%2d\n",I,I,P+I,I,X+I,I,\&X[I],I,X[I],I,*(P+I),I,*(X+I));

printf("\n");system("pause");

}

Suatu nilai dapat diberikan langsung keelemen larik dengan cara pertama yaitumenggunakan indeks dari larik.

Cara yang kedua yaitu dengan memberikannilai ke lokasi memori dimana alamatnyamerupakan alamat letak dari nilai elemenlariknya. Cara yang kedua ini dapat dilakukandengan menggunakan pointer.

Contoh program berikut akan memperlihatkan nilai-nilai elemen larik dimensi satu X akan diisi dengannilai-nilai tertentu dengan menggunakan cara yangpertama.Elemen pertama dari larik diberi dengan nilai 5.Elemen kedua diisi dengan nilai yang sama dengannilai elemen pertama, yaitu bernilai 5. Elemen ketigadiisi dengan nilai yang ada di elemen ke satu(ditunjukkan oleh ungkapan *P yang berarti X[0])ditambah dengan nilai numerik 2, sehingga akanberisi dengan nilai 7 dan seterusnya.

/* -------------------------------------------------------------------Nama Program: ADP_Pointer_7a_Operasi_Larik.cppOperasi Pointer Untuk Larik------------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int *P, X[5];

printf("Contoh Program Memberi Nilai Elemen Larik Menggunakan Pointer\n");printf("_____________________________________________________________\n");printf("\n");

P = X;X[0] = 5; //X[0] diisi dengan nilai 5, sehingga X[0]=5X[1] = X[0]; //X[0] diisi dengan nilai X[0], sehingga X[1]=5X[2] = *P+2; //X[0] diisi dengan nilai X[0]+2, sehingga X[2]=7X[3] = *(P+1)-3; //X[0] diisi dengan nilai X[1]-3, sehingga X[3]=2X[4] = *(X+2); //X[0] diisi dengan nilai X[2], sehingga X[4]=7printf("%d %d %d %d %d\n",X[0], X[1], X[2], X[3],X[4]);

printf("\n");system("pause");

}

Contoh program berikut akan memperlihatkannilai-nilai elemen larik dimensi satu X akan diisidengan nilai-nilai tertentu dengan menggunakancara yang kedua.Nilai elemen pertama dari larik diberi dengannilai5. Nilai elemen kedua diberi dengan nilaiyang sama dengan elemen pertama. Nilai elemenketiga diberi nilai yang ada di elemen pertamaditambah dengan nilai numerik 2 sehingga akanberisi dengan nilai 7 dan seterusnya.

/* -------------------------------------------------------------------Nama Program: ADP_Pointer_7b_Operasi_Larik.cppOperasi Pointer Untuk Larik-------------------------------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

int *P, X[5];

printf("Contoh Program Memberi Nilai Elemen Larik Menggunakan Pointer\n");printf("_____________________________________________________________\n");printf("\n");

P = X;

*P = 5; //X[0] diisi dengan nilai 5, sehingga X[0]=5*(P+1) = X[0]; //X[0] diisi dengan nilai X[0], sehingga X[1]=5*(X+2) = *P+2; //X[0] diisi dengan nilai X[0]+2, sehingga X[2]=7*(P+3) = *(P+1)-3; //X[0] diisi dengan nilai X[1]-3, sehingga X[3]=2*(P+4) = *(X+2); //X[0] diisi dengan nilai X[2], sehingga X[4]=7printf("%d%d %d %d %d\n",X[0], X[1], X[2], X[3],X[4]);

printf("\n");system("pause");

}

Pemilihan penggunaan indeks atau pointer untukmengakses atau memberi nilai elemen-elemen lariktergantung dari pertimbangan kecepatan proses programdan tingkat kerumitannnya.

Jika pengaksesan elemen-elemen larik dilakukan secaraurut, penggunaan pointer akan menghasilkan prosesprogram yang lebih cepat dibandingkan denganmenggunakan indeks.

Jika pengaksesan elemen-elemen larik menggunakanrumus-rumus tertentu yang rumit untuk menunjukkanurutan elemennya, maka penggunaan indeks lebih disukai,karena penggunaan pointer akan lebih rumit danmembingungkan.

Karena biasanya kecepatan proses program seringkalidijadikan alasan yang utama, maka banyak program-program aplikasi yang ditulis dengan bahasa Cmenggunakan pointer untuk pengaksesan elemen-elemen

Pointer sebagai suatu larikberbeda dengan suatu lrik yangdioperasikan denganmenggunakan pointer.

Pointer sebagai suatu larikmaksudnya adalah suatu pointerdigunakan sebagai penggantisuatu larik.

Kristanto, Andri. (2009). Algoritma &Pemrograman dengan C++ Edisi 2.Yogyakarta. Graha Ilmu.

Hartono, Jogiyanto, MBA., Ph.D. (2002).Konsep Dasar Pemrograman Bahasa C.Yogyakarta. Andi.

ALGORITMA DAN

DASAR PEMROGRAMAN

Struktur adalah sekumpulan variabel yangmasing-masing tipe datanya bisa berbeda,dan dikelompokkan dalam satu nama.Berbeda dengan suatu larik yang berisikumpulan elemen-lemen larik bertipe samadalam satu nama, struktur dapat terdiri darikumpulan variabel-variabel yang berbedatipenya dalam satu nama.Variabel-variabel yang membentuk suatustruktur selanjutnya disebut elemen-elemenatau anggota struktur.

Struktur membantu mengatur data-data yangrumit, khususnya dalam program yang besar,karena struktur memberikan sekelompok variabelyang diperlakukan sebagai satu unit.Struktur dimungkinkan dapat berisi elemen-elemen data bertipe int, float, char, dan lainnya.Pada Pascal, struktur ini juga dikenal sebagairecord).Stuktur sering digunakan untuk mendefinisikansuatu record data yang disimpan di dalam file.Struktur termasuk ke dalam tipe data yangdibangkitkan (derived data type), yang disusunmenggunakan obyek dengan tipe yang lain.

Struktur dapat dideklarasikan menggunakan katakunci struct, contohnya seperti berikut:

struct IP_Mhs{int NIM[10];char Nama[50];int Semester;float IP;

};Struktur di atas memiliki nama IP_Mhs danmemiliki empat buah elemen, yaitu NIM[10]bertipe int, Nama[50] bertipe char, Semesterbertipe int, dan IP bertipe float.

IP_Mhs merupakan nama dari tipe data strukturyang mempunyai empat buah elemen tersebut,bukan nama dari suatu variabel struktur.

Variabel struktur selanjutnya dapatdideklarasikan dengan nama tipe data IP_Mhsyang diawali dengan kata kunci struct sepertipada contoh berikut ini:

struct IP_Mhs IP_Semester, IP_Kumulatif;IP_Semester dan IP_Kumulatif merupakanvariabel-variabel yang mempunyai tipe dataIP_Mhs.

Deklarasi variabe-variabel tipe data strukturjuga dapat dilakukan denganmenggabungkan kedua deklarasi yangterpisah menjadi sebuah deklarasi, seperticontoh berikut:struct IP_Mhs {

int NIM[10];char Nama[50];int Semester;float IP;} IP_Semester, IP_Kumulatif;

Nama dari tipe struktur, selanjutnya dapat digunakanuntuk mendeklarasikan variabel-variabel yang laindengan struktur tersebut.Jika nama struktur tidak digunakan lagi untukmendeklarasikan variabel-variabel struktur yang lain,maka nama dari tipe data ini dapat juga tidakdituliskan, sehingga deklarasinya dapat berbentukseperti ini:struct {

int NIM[10];char Nama[50];int Semester;float IP;} IP_Semester, IP_Kumulatif;

Variabel-variabel struktur dapat juga langsung diberinilai awal. Misalnya variabel IP_Semester mempunyainilai awal NIM-nya adalah 3201416001, NamaMahasiswanya adalah “Danish”, semesternya adalah 2dan IP-nya 3.15, maka dapat dituliskan sebagaiberikut:struct {

int NIM[10];char Nama[50];int Semester;float IP;} IP_Semester = {3201416001, “Danish”, 2, 3.15 },

IP_Kumulatif;

Atau jika nama tipe data strukturnya telahdideklarasikan sendiri dan variabelstrukturnya dideklarasikan terpisah, makadapat ditulis:

struct IP_Semester = {

3201416001, “Danish”, 2, 3.15 },IP_Kumulatif;

Elemen-elemen struktur dapat diakses secaraindividual dengan menyebutkan namavariabel strukturnya diikuti oleh operator titik(‘.’) dan nama dari elemen strukturnya,seperti berikut ini:

X = IP_Semester.IP;

yang menunjukkan elemen dengan nama IPdari variabel struktur IP_Semester dengannilai awal 3.15, diisikan ke variabel numeriklain bernama X.

/* ------------------------------------------Nama Program: ADP_Struktur_1.cppStruktur------------------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

struct {char Nama[20];int NIM;float IP;

}Mhs;

printf("Nama Mahasiswa: ");scanf("%s", &Mhs.Nama);printf("Nomor Induk Mahasiswa: ");scanf("%d", &Mhs.NIM);printf("Indeks Prestasi Semester: ");scanf("%f", &Mhs.IP);printf("\n");

printf("Data Mahasiswa adalah %s, dengan NIM %d, dan IP %.2f\n", Mhs.Nama, Mhs.NIM, Mhs.IP);

printf("\n");system("pause");

}

/* ------------------------------------------Nama Program: ADP_Struktur_2.cppStruktur------------------------------------------ */

#include <stdio.h>#include <stdlib.h>

main(){

struct {float JariJari;float Keliling;float Luas;

}Lingkaran;

printf("Jari-jari Lingkaran: ");scanf("%f", &Lingkaran.JariJari);printf("\n");

Lingkaran.Keliling = 2*3.14*Lingkaran.JariJari;Lingkaran.Luas = 3.14*Lingkaran.JariJari*Lingkaran.JariJari;

printf("Jadi Keliling Lingkaran adalah %.2f\n", Lingkaran.Keliling);printf("Sedangkan Luas Lingkaran adalah %.2f\n", Lingkaran.Luas);

printf("\n");system("pause");

}

Pada contoh program ADP_Struktur_1.cppvariabel struktur Mhs, elemen Nama dapatdiakses dengan menuliskan Mhs.Nama, elemenNIM dapat diakses dengan menuliskan Mhs.NIM,dan elemen IP dapat diakses dengan menuliskanMhs.IP.Sedangkan pada contoh programADP_Struktur_2.cpp, elemen JariJari dapatdiakses dengan menuliskan Lingkaran.JariJari,elemen Keliling dapat diakses denganmenuliskan Lingkaran.Keliling dan elemen Luasdapat diakses dengan menuliskanLingkaran.Luas.

Suatu struktur dapat berisi struktur yanglain dengan elemn berupa struktur yanglain. Jika suatu elemen dari struktur dapatdiakses dengan menuliskan sebagai berikut:

nama-variabel.nama-elemen;

maka sub-elemen dari struktur dapatdiakses dengan menuliskan:

nama-variabel.nama-elemen.nama-sub-elemen

/* -----------------------------------------

Nama Program: ADP_Struktur_3.cpp

Struktur berisi Struktur lain----------------------------

------------- */

#include <stdio.h>#include <stdlib.h>

main(){

struct Tanggal{unsigned int Hari;

unsigned int Bulan;unsigned int Tahun;

};

struct Alamat{char Jalan[30];

char Kota[20];};

struct {char Nama[40];

struct Tanggal Masuk;struct Alamat Tinggal;float Gaji;

}Karyawan = {"Muhammad Fadly",

17,11,87,“Jl. Adisucipto no.35","Pontianak",1500000

};

//Menampilkan data karyawanprintf("Nama Karyawan: %s\n",Karyawan.Nama);printf("Tanggal Masuk : %2d-%2d-

%2d\n",Karyawan.Masuk.Hari,Karyawan.Masuk.Bulan, Karyawan.Masuk.Tahun);

printf("Alamat : %s, %s\n",Karyawan.Tinggal.Jalan,Karyawan.Tinggal.Kota);

printf("Gaji per Bulan : Rp. %10.2f\n",Karyawan.Gaji);

printf("\n");system("pause");

}

Elemen-elemen dari suatu larik dapat jugaberbentuk suatu struktur. Larik strukturdimensi satu membentuk suatu tabel (miripdengan larik dimensi dua) dengan barisnyamenunjukkan elemen dari lariknya dankolomnya menunjukkan elemen dari struktur.Tiap-tiap elemen dari struktur dapat diaksesuntuk tiap-tiap elemen larik denganmenuliskan nama dari lariknya diikuti denganindeksnya, diikuti oleh operator titik dannama dari elemen strukturnya.

/* --------------------------------Nama Program: ADP_Struktur_4.cpp

Larik Struktur-------------------------------- */

#include <stdio.h>#include <stdlib.h>

main(){

struct Psd{char Kode[5];char Nama[20];int Unit;float Harga;

};

struct Psd Persediaan[100] = {"M123","Monitor",5,125000,"D124","DVD",10,10000,"P125","Printer",7,3000000

};

int I, N=3;float Total=0;

//Tampilkan hasilnya dalam bentuk labelprintf(" DATA PERSEDIAAN\n\n");printf("Kode Nama Unit Harga Total\n");printf("_____________________________________________________\n");printf("\n");

for(I=0;I<N;I++){printf("%s %-5s %4d %10.2f %10.2f\n",Persediaan[I].Kode,

Persediaan[I].Nama,Persediaan[I].Unit,Persediaan[I].Harga,Persediaan[I].Unit*Persediaan[I].Harga);

Total += Persediaan[I].Unit*Persediaan[I].Harga;}printf("\n ");printf("Total %10.2f \n",Total);

printf("\n");system("pause");

}

Kristanto, Andri. (2009). Algoritma &Pemrograman dengan C++ Edisi 2.Yogyakarta. Graha Ilmu.

Hartono, Jogiyanto, MBA., Ph.D. (2002).Konsep Dasar Pemrograman Bahasa C.Yogyakarta. Andi.