Anda di halaman 1dari 77

LAPORAN PRAKTIKUM

ALGORITMA DAN PEMOGRAMAN DASAR


Semester 1 Tahun Akademik 2022/2023

Oleh:

Nama : Ria Robbania

NPM : C2C022002

LABORATORIUM INFORMATIKA

PROGRAM STUDI INFORMATIKA

FAKULTAS TEKNIK

UNIVERSITAS MUHAMMADIYAH SEMARANG

TAHUN 2022/2023
DAFTAR ISI

Pendahuluan

BAB I PENGENALAN C++

1.
BAB I
PENGENALAN C++

1.1 Tujuan Praktikum


Mengenal Bahasa c dan belajar membuat program, dalam pertemuan ini
mahasiswa dikenalkan dengan salah satu Bahasa pemrograman yaitu Bahasa
C++. Bahasa c++ biasa digumakan untuk membuat beberapa aplikasi seperti
aplikasi pengolah gambar, software gadget, hingga system operasi baru.
Mahasiswa diminta untuk menggunakan aplikasi Bernama Dev C++.
1.2 Dasar Teori
PENGENALAN C++
Bahasa pemrograman C++ merupakan bahasa yang bisa digunakan untuk
membuat berbagai aplikasi. Misalnya, aplikasi pengolah gambar, software
gadget, game, hingga system operasi baru. Bahasa ini dikembangkan dari
Bahasa pemrograman C. tak heran kalua dua Bahasa ini memiliki sintaks dan
struktur kode dan struktur kode yang sama.
1.3 Hasil Dan Pembahasan
MEMBUAT MAIN PROGRAM DARI C++

Main program dari C++ adalah :

Include<iostream>

Using namespace std;

Main() {

}
Include merupakan bagian dari struktur C. tujuannya untuk mengimpor fungsi
yang sudah didefinisikan pada header file,Using namespace std berarti
gunakan semua yang ada dalam namespace std (standard), seperti cin, cout,
endl, vector, string, pair, map,queue, dan lain lain yang merupakan fitur fitur
di C++ standard library.Main adalah blok code yang akan di eksekusi saat
program dijalankan.
BAB II

TIPE DATA DAN VARIABLE

2.1 Tujuan Praktikum

Mahasiswa memahami tentang operator dan penggunaannya dalam bahasa


pemrograman java, mengetahui macam-macam kategori operator dan
mengetahui perbedaan operator satu dengan yang lainnya 2.1. Variabel
Variabel adalah nama dari suatu lokasi di memori yang digunakan untuk
menyimpan data sementara. Variabel diberi nama tertentu yang menunjukkan
domain yang diwakilinya.

2.2 Dasar Teori


1. Tipe data: Setiap data memiliki tipe data, apakah data berupa angka bulat
(integer), angka biasa (real), atau berupa karakter (char), dsb.
2. Variabel: Setiap data diwakili oleh suatu variabel, data memerlukan
wadah, dan variabel perlu identifikasi sehingga perlu diber nama agar bisa
dibedakan dengan variabel lain.
2.3 Hasil Dan Pembahasan
A. Tipe Data
Ada dua kategori dari tipe data, yaitu tipe data dasar dan tipe data
bentukan. Tipe data dasar adalah tipe data yang disediakan oleh bahasa
pemrograman, antara lain: bilangan bulat (integer), bilangan biasa (real),
bilangan tetap (const), karakter (character atau char), logic (logic atau
boolean). Tipe data bentukan adalah tipe data yang dibentuk dari
kombinasi tipe data dasar, antara lain larik (array), rekaman (record),
string (string).
 Tipe Data Dasar
1. Bilangan Bulat (integer)
a. Bilangan atau angka yang tidak memiliki titik decimal atau
pecahan, seperti 10, 255, - 234.
b. Tipe dituliskan sebagai integer atau int
c. Jangkaun nilai bergantung pada implementasi perangkat keras
computer, misalnya dari - 32768 s/d +32767.
d. Operasi aritmatika: tambah +, kurang -, kali *, bagi /, sisa hasil
bagi %.
e. Operasi perbandingan: ,<=,>=,==, >< atau !=.
2. Bilangan Biasa
a. Bilangan atau angka yang bisa memiliki titik decimal atau pecahan,
dan ditulis sebagai: 235.45, +10456.56, -565.87 atau dalam notasi
ilmiah seperti:1.234E+03, dsb.
b. Tipe data dituliskan sebagai real atau float
c. Jangkauan nilai: bergantung pada implementasi perangkat keras
computer, misalnya dari -2.9E-39 s/d +1.7E+38.
3. Bilangan tetap (const)
a. Bilangan tetap (const) adalah tipe bilangan, baik bernilai bulat
maupun tidak, yang nilainya tidak berubah selama algoritma
dilaksanakan.
b. Tipe dituliskan sebagai const.
c. Jangkauan nilai meliputi semua bilangan yang mungkin.
4. Karakter (character)
a. Karakter adalah data tunggal yang mewakili semua huruf, symbol
baca, dan juga symbol angka yang tidak dapat dioperasikan secara
matematis, misalnya ‘A’,’a’,’?’,’#’, dst
b. Tipe dituliskan sebagai char
c. Jangkauan nilai meliputi semua karakter dalam kode ASCII, atau
yang tertera pada setiap tombol keyboard.
d. Operasi pembandingan dapat dilakukan dan dievaluasi menurut
kode ASCII seperti huru ‘A’ (Hex 41) sebenarnya lebih kecil dari
huruf ‘a’ (Hex 61).
5. Logik
a. Tipe data logic adalah tipe data yang digunakan untuk memberi
nilai pada hasil pembandingan, atau kombinasi pembandingan.
b. Tipe dituliskan sebagai boolean.
c. Jangkauan nilai ada dua, yaitu true dan false.
d. Contoh: 45 > 67, hasil false.
e. Ada beberapa operasi untuk data jenis logic, antara lain and, or,
dan not. A B A and B A or B Not A False False False False True
False True False True True True False False True False True True
True True False
 Tipe Bentukan
1. Array (larik)
a. Array adalah tipe data bentukan yang merupakan wadah untuk
manampung nilai-nilai data yang sejenis. Kumpulan bilangan bulat
adalah array integer, kumpulan bilangan tidak bulat adalah array
real.
b. Cara mendifiniskan ada dua macam, yaitu: 1) Nilai_ujian:
array[1...10] of integer; atau 2) int nilai_ujian[10]
c. Kedua dfinisi di atas menunjukan bahwa nilai_ujian adalah
kumpulan dari 10 nilai bertipe bilangan bulat.
2. String
a. String adalah tipe data bentukan yang merupakn deretan karakter
yang membentuk satu kata atau satu kalimat, yang biasanya diapit
oleh dua tanda kutip.
b. Contoh: nama, alamat, dan judul adalah tipe string
c. Cara mendifinisaknnya adalah: 1) String Nama, Alamat; atau 2)
Nama, Alamat: String
B. Variable
Variabel adalah nama yang mewakili suatu elemen data, seperti t4lahir
untuk tempat lahir, alamat untuk alamat, tangla untuk tanggal lahir, dsb.
Ada aturan tertentu yang wajib diikuti dalam pemberian nama variabel,
antara lain:
1. Harus dimulai dengan abjad, tidak boleh dimulai dengan angka atau
symbol. Khusus untuk PHP, variabel selalu ditulis dengan awalan
berupa $.
2. Tidak boleh ada spasi diantaranya.
3. Jangan menggunakan symbol-simbol yang bisa membingungkan,
seperti titik dua, titik koma, koma, dsb.
4. Sebaiknya memiliki arti yang sesuai dengan elemen data.
5. Sebaiknya tidak terlalu panjang. Contoh nama variabel yang benar
$nama, $nilai_ujian Contoh nama variabel yang salah 4xyz, $ip rata.
BAB III

OPERATOR DAN INPUT

3.1 Tujuan Praktikum


1. Mengetahui input dan output data dalam pemrograman C++.
2. Memahami simbol operator matematika dan logika.
3. Mengetahui program input output data dengan contoh beberapa rumus yang telah
dicontohkan.
3.2 Dasar Teori
Operator aritmatika merupakan operator yang digunakan untuk melakukan operasi
aritmatika.

Operator penugasan (Assignment Operator) merupakan operator untuk meberikan


tugas pada variabel. Biasanya untuk mengisi nilai.

Operator Penugasan terdiri dari:


1.4 Hasil Dan Pembahasan1.3 Hasil Dan Pembahasan

3.3 Hasil Dan Pembahasan

Contoh Program:
a. Simpan dengan nama file contoh1
Input :
Inputkan nilai a : <variable a>
Inputkan nilai b : <variable b>
Proses :
c=a+b <variable c>
Output :
Hasil a + b =
b. Simpan dengan nama file contoh2
Input :
Masukkan bilangan 1: <variable a>
Masukkan bilangan 2: <variable b>
Proses :
sum=a+b
Output :
Penjumlahan <isi variable a > + <isi variable b>=
BAB VI

RELASI DAN KONDISI

4.1 Tujuan Praktikum

Setelah mempelajari bab ini, mahasiswa diharapkan akan mampu :


1. Mengenal dan memahami penggunaan statement perulangan.
2. Membuat program sederhana dengan menerepakan konsep perulangan.
3. Menjelaskan cara kerja program menggunakan konsep perulangan.
4.2 Dasar Teori
Dalam bahasa C++ tersedia suatu fasilitas yang digunakan untuk melakukan
proses yangberulangulang sebanyak keinginan kita. Misalnya saja, bila kita
ingin menginput dan mencetakbilangan dari 1 sampai 100 bahkan 1000,
tentunya kita akan merasa kesulitan. Namun denganstruktur perulangan
proses, kita tidak perlu menuliskan perintah sampai 100 atau 1000 kali,
cukupdengan beberapa perintah saja.Struktur perulangan dalam bahasa C
mempunyai bentuk yang bermacam-macam.Sebuah/kelompok instruksi
diulang untuk jumlah pengulangan tertentu. Baik yang
terdifinisikansebelumnya ataupun tidak. Struktur pengulangan terdiri atas dua
bagian :
1. Kondisi pengulangan yaitu ekspresi boolean yang harus dipenuhi untuk
melaksanakanpengulangan;
2. Isi atau badan pengulangan yaitu satu atau lebih pernyataan (aksi) yang
akan diulang.

Statement For

Struktur perulangan for biasa digunakan untuk mengulang suatu proses


yang telahdiketahui jumlah perulangannya. Dari segi penulisannya, struktur
perulangan for tampaknya lebihefisien karena susunannya lebih simpel dan
sederhana.Pernyataan for digunakan untuk melakukan looping. Pada
umumnya looping yang dilakukan olehfor telah diketahui batas awal, syarat
looping dan perubahannya. Selama kondisi terpenuhi, makapernyataan akan
terus dieksekusi.

Bentuk umum perulangan for adalah sebagai berikut :

Ungkapan1 merupakan statement awal (inisialisasi)

Ungkapan2 merupakan kondisi/syarat perulangan dilakukan

Ungkapan3 merupakan statementcontrol untuk perulanganStatement


merupakan pernyataan/perintah yang dijalankan jika syarat
terpenuhi.Contoh :

for(a=1;a<=5;a++){cout<<”Hello World! \n”}

Perintah diatas menampilkan kalimat “Hello World!” sebanyak 5 baris.

Selain berupa angka, pencacah perulangan juga dapat berupa karakter.


Contoh:

for(huruf=‟Z‟;huruf>=‟A‟;huruf--){Cout<<Abjad ”<<huruf<<”\n”;}

Perintah diatas menampilkan abjad Z – A.

StatementWhile

Perulangan WHILE banyak digunakan pada program yang terstruktur.


Perulangan inibanyak digunakan bila jumlah perulangannya belum diketahui.
Proses perulangan akan terusberlanjut selama kondisinya bernilai benar (≠0)
dan akan berhenti bila kondisinya bernilai salah(=0).

Statement Do-While

Perintah DO ... WHILE hampir sama dengan WHILE sebelumnya.


Gambaran secara umum:

Perbedaan dengan WHILE sebelumnya yaitu bahwa pada DO WHILE


statement perulangannyadilakukan terlebih dahulu baru kemudian di cek
kondisinya. Sedangkan WHILE kondisi dicekdulu baru kemudiastatement
perulangannya dijalankan. Akibat dari hal ini adalah dalam DOWHILE
minimal terdapat 1x perulangan. Sedangkan WHILE dimungkinkan
perulangan tidakpernah terjadi yaitu ketika kondisinya langsung bernilai
FALSE.

4.3 Hasil dan Pembahasan


#include<iostream.h>
int main()
{
int in, x, j;
cout<<"Masukkan Tinggi Segitiga :";
cin>>in;
for(x=1;x<=in;x++){
for(j=1;j<=x;j++){
printf("*");
}
cout<<"\n";

Output program

Algoritma:

1. Mulai
2. Deklarasi variabel (in, x, j)
3. Masukkan angka
4. Proses
5. Untuk x kurang dari sama dengan in
6. Menambahkan 1 pada x
7. Untuk j kurang dari sama dengan x maka cetak (*) dan ganti baris
8. Menambahkan 1 pada j
9. Apabila nilai in kurang dari nilai x maka program akan berulang ke langkah 5
10. Apabila nilai in samadengan nilai x maka program berakhir.
11. Selesai

Penjelasan Program:

Pada Program diatas pengguna atau user pertama memasukkan bilangan untuk
tinggisegitiga yang akan dibuat, kemudian program akan berulang 2 kali, yang
pertama untuk nilai xkurang dari sama dengan jumlah baris yang diinputkan,
kemudian nilai dari x akan di tambah 1.Selama kondisi pada x benar maka
program akan menjalankan perulangan kedua untuk nilai jkurang dari sama
dengan nilai x, kemudian nilai j akan di tambah 1, selama kondisi benarprogram
akan menampilkan (*) dan berganti baris dan akan berhenti jika program
berkondisisalah
BAB V

KONDISI BERSARANG

5.1 Tujuan Praktikum


Setelah mempelajari bab ini diharapkan mahasiswa akan mampu :

1. Menjelaskan tentang fungsi operasi kondisi.


2. Menjelaskan tentang fungsi if, if else, if else bertingkat, dan
switch case
5.2 Dasar Teori
Operasi Kondisi C++

Pernyataan bercabang pada pemrograman digunakan untuk


memecahkan persoalanuntuk mengambil suatu keputusan diantara
sekian pernyataan yang ada, dimana sebuahinstruksi akan dilaksnakan
jika sebuah kondisi terpenuhi. Terdapat 5 jenis operasi kondisi,antara
lain : Pernyataan If, Pernyataan If-Else, If-Else Bertingkat (Nested If
dan If-Else If),Pernyataan Switch-Case.

1. Pernyataan If
Apabila kondisi (persyaratan) bernilai benar, maka instruksi
(pernyataan) akan dikerjakan, dan jika memenuhi persyaratan maka
program akan mengabaikan pernyataan.
Penulisan pernyataan if :

kondisi harus di dalam kurung (.....) dan berupa ekspresi boolean yaitu
hasil logika

true atau false, dan pernyataan dapat berupa sebuah pertanyaan tunggal,
pernyataan majemukatau pernyataan kosong.

Pernyataan tunggal

:if (kondisi)

Pernyataan;

Pernyataan manjemuk

:if (kondisi) {

Pernyataan1;

Pernyataan2;

....; }

2. Pernyataan If – Else
Apabila kondisi (persyaratan) bernilai benar, maka instruksi-1
(pernyataan-1) yang akandieksekusi dan jika tidak memenuhi
persyaratan maka akan dieksekusi instruksi-2 (pernyataan-2).

Penulisan pernyataan if else:


if (kondisi)
Pernyataan-1;
Else
Pernyatan-2;
Pada Gambar 2. Diagram Alir If-Else pernyataan-1 dan pernyataan-
2 dapat berupa sebuah pernyataan tunggal, pernyataan majemuk,
atau pernyataan kosong, bentuk penulisannya adalah:
if (kondisi)
{Pernyataan-1;
....; }

Else {

Pernyatan-2;
....; }
3. If-Else Bertingkat Nested If (If Bersarang)
Merupakan pernyataan if yang ada di dalam pernyataan if yang
lain.Bentuk umum pernyataan Nested If:
if (kondisi-1)
if (kondisi-2)
Pernyataan;

else //untuk kondisi-1

Pernyataan;

Else //untuk kondisi-2

Pernyataan;

Kondisi atau syarat harus ditulis dalam tanda kurung. Jika instruksi yang
dikerjakan pada saat kondisi benar/salah masing-masing tidak lebih dari
satu instruksi, maka tanda kurung kurawal buka/tutup bersifat optional
(boleh digunakan, boleh tidak).
Dalam menuliskankondisi/syarat selalu digunakan operator relasional
sebagai sarana untuk melakukan proses pengecekan dan operator yang
digunakan adalah sebagai barikut:

Operator Relasi

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

4. If-Else Bertingkat If-Else If (If-Else Majemuk)


Merupakan penggunaan bentuk if else secara majemuk. Pernyataan
if pada else if akandieksekusi jika hasil pernyataan if sebelumnya
bernilai false.Bentuk umum pernyataan If-Else If :
if (kondisi-1) {
Pernyataan....;....; }
else if (kondisi-2) {
Pernyataan....;
....; }
Else
{Pernyataan....;
....; }
5. Pernyataan Switch-Case
Merupakan pernyataan yang dirancang khusus untuk menangani
pengambilan keputusan yangmelibatkan sejumlah atau banyak
alternatif. Pernyataan Switch-Case memiliki kegunaan yangsama
seperti If-Else Bertingkat, tetapi dengan kondisi yang bertipe
karakter atau integer.Bentuk umum dari pernyataan :switch
(ekspresi) {
case konstanta1;
pernyataan1;
break;
case konstanta2;
pernyataan2;
break;
case konstanta-n;
pernyataan-n;
break;
default;
pernyataan-umum; }
Setiap cabang akan dijalankan jika syarat nilai konstanta terpenuhi
dan default akan dijalankan jika semua cabang diatasnya tidak
terpenuhi. Pernyataan
break menunjukkan setelah eksekusi pernyataan, maka program akan
keluar dari switch, jika pernyataan ini tidak ada, maka programakan
diteruskan ke cabang-cabang yang lainnnya.
Pernyataan switch lebih jarang digunakan, tetapi sering bermanfaat
apabila kita inginmenuliskan percabangan multi arah. Di sini
pernyataan switch akan mencari nilai ekspresi yangsesuai dengan nilai-
nilai yang didaftarkan pada pernyataan case. Jika salah satu nilai
ditemui,maka program akan melompat ke cabang case tersebut dan
melakukan perintah yang terdapatdi sana. Jika tidak ditemui, maka
program akan melompat ke perintah yang terdapat pada pernyataan
default. Ekspresi hanya bisa berbentuk nilai bilangan bulat (int, short,
dansejenisnya) atau karakter. Pernyataan break sebetulnya tidak harus
selalu ada. Tetapi, perintah break memerintahkan komputer agar keluar
dari blok switch apabila perintah telah selesaidilaksanakan. Jika
perintah break tidak diberikan, maka program akan terus mengeksekusi
perintah lain meskipun sudah berada di luar nilai yang tertera dalam
pernyataan casenya.

5.3 Hasil dan Pembahasan

Output Program

Kedua masukan merupakan bilangan positif :

Penjelasan Program
:Program di atas digunakan untuk mengetahui apakah masukan nilai dari
variabel x dan variabely adalah keduanya bilangan positif, atau salah
satunya bilangan positif, atau keduanya bukan bilangan positifHeader
yang digunakan :#include <iostream.h> karena berfungsi untuk
mengeluarkan perintah cout, cinFungsi utama yang digunakan :int main ()
berarti int memberikan nilai balik, dan karena memiliki nilai balik maka
diberikan perintah return 0;Tipe data yang digunakan :int : tipe data yang
digunakan untuk menyatakan bilangan bulat.

Kondisi (pernyataan) yang digunakan :if(x>0 && y>0) adalah kondisi ke-
1 digunakan untuk mengkondisikan masukan nilai darivariabel x dengan
nilai dari variabel y dihubungkan AND, jika benar maka akan memberikan

keluaran “Kedua bilangan tersebut adalah bilangan POSITIF”, jika salah


maka akan memberikan kondisi ke-2 else if (x>0 || y>0) jika benar maka
akan memberikan keluaran “Salah satu bilangan tersebut adalah bilangan
POSITIF”, jika kondisi ke-2 salah maka akanmemberikan keluaran
“Kedua bilangan tersebut BUKAN bilangan POSITIF”
BAB VI

PERULANGAN

6.1 Tujuan Praktikum

Setelah mempelajari bab ini diharapkan mahasiswa akan mampu :


1. Mengenal dan memahami penggunaan statement perulangan.
2. Membuat program sederhana dengan konsep perulangan.
6.2 Dasar Teori
Perulangan data atau yang biasa disebut dengan “looping” adalah proses
yang dilakukan secara berulang-ulang sampai batas yang ditentukan.
Struktur Perulangan digunakan untuk mengulang sekumpulan perintah
sesuai dengan kondisi yang diberikan. Proses perulangan biasanya digunakan
untuk mengulang prosespemasukan data, mengulang proses perhitungan dan
mengulang untuk proses penampilanhasil pengolahan data, dengan jumlah
tertentu jika sebuah kondisi belum terpenuhi.
Pada bahasa pemrograman, perulangan proses ditangani dengan suatu
mekanisme yang dinamakan dengan nama loop. Dengan loop, suatu proses
yang berulang dapatdiimplementasikan dengan menggunakan statement -
statement yang pendek, tanpa harusmenuliskan statemen berulang-ulang
Struktur perulangan dalam bahasa C mempunyai bentuk yang bermacam-
macam.Sebuah/kelompok instruksi diulang untuk jumlah pengulangan
tertentu. Baik yangterdifinisikan sebelumnya ataupun tidak.
Struktur pengulangan terdiri atas dua bagian :
1. Kondisi pengulangan yaitu ekspresi boolean yang harus dipenuhi untuk
melaksanakan pengulangan;
2. Isi atau badan pengulangan yaitu satu atau lebih pernyataan (aksi) yang akan
diulang.
Terdapat 3 macam struktur perulangan, yaitu : FOR, WHILE, DO-WHILE.
a) Statement FOR
Struktur perulangan for biasa digunakan untuk mengulang suatu proses
yang telahdiketahui jumlah perulangannya. Dari segi penulisannya,
struktur perulangan fortampaknya lebih efisien karena susunannya lebih
simpel dan sederhana.Pernyataan for digunakan untuk melakukan looping.
Pada umumnya looping yangdilakukan oleh for telah diketahui batas awal,
syarat looping dan perubahannya.Selama kondisi terpenuhi, maka
pernyataan akan terus dieksekusi.
Bentuk umum perulangan FOR :
 Ungkapan1 merupakan statement awal (inisialisasi)
 Ungkapan2 merupakan kondisi/syarat perulangan dilakukan
 Ungkapan3 merupakan statement control untuk perulangan
 Statement merupakan pernyataan/perintah yang dijalankan jika syarat
terpenuhi.

Penjelasannya adalah sebagai berikut:1.


1. Inisialisasi: akan dieksekusi. Biasanya merupakan variable yang akan
dipakaisebagai counter atau pencacah. Bagian ini akan dieksekusi hanya
sekali.
2. Kondisi: akan diperiksa, jika bernilai true maka perulangan akan
dilanjutkan dan jika bernilai false maka perulangan akan dilewati.
3. Pernyataan: akan dieksekusi. Biasanya dapat terdiri dari sebuah instruksi
ataublok instruksi yang berada di antara { dan }.
4. Terakhir, apapun perintah dalam counter akan dijalankan dan
kemudianperulangan kembali lagi ke langkah
Contoh Perulangan :
for(x=1; x<=10; x++)
{
cout<< “Selamat Belajar Perulangan FOR\n”;
}
Perintah diatas menampilkan kalimat “Selamat Belajar Perulangan FOR”
sebanyak 10
Baris.
b) Statement WHILE
Perulangan WHILE banyak di gunakan pada program yang terstruktur.
Perulangan inibanyak digunakan bila jumlah perulangannya belum
diketahui. Proses perulangan
akan terus berlanjut selama kondisiny a bernilai benar (≠0)
dan akan berhenti bilakondisinya bernilai salah (=0).
Bentuk perulangan umum WHILE :
while (SyaratPerulangan;) {
statement yang dijalankan;
statement control;
}
c) Statement DO-WHILE
perintah DO ... WHILE hampir samadengan WHILE sebelumnya.Bentuk
perulangan umum DO-WHILE :
do
{
Blok Pernyataan
}
while (kondisi);

Perbedaan dengan WHILEsebelumnya yaitu bahwa pada DO


WHILEstatement perulangannya dilakukan terlebihdahulu baru kemudian
di cek kondisinya.Sedangkan WHILE kondisi dicek dulu baru kemudian
statement perulangannyadijalankan. Akibat dari hal ini adalah dalam DO
WHILE minimal terdapat 1xperulangan. Sedangkan WHILE
dimungkinkan perulangan tidak pernah terjadi yaitu ketika kondisinya
langsung bernilai FALSE.
6.3 Pembahasan dan Hasil
#include <iostream.h>
#include <conio.h>
#include <windows.h>

int main()
{
system ("color F0");
int pilihan;
do {
cout << "MENU PILIHAN : \n";
cout << " 1. Baca Data\n";
cout << " 2. Ubah Data\n";
cout << " 3. Hapus Data\n";
cout << " 4. Exit\n";
cout << "Pilihan Anda (1/2/3/4) : ";
cin>>pilihan;

if (pilihan==1) {
cout << "Anda Memilih menu 1\n";
cout << "Tekan ENTER untuk kembali ke menu
utama\n"<<endl;
getch(); }
else if (pilihan==2) {
cout << "Anda Memilih menu 2\n";
cout << "Tekan ENTER untuk kembali ke menu
utama\n"<<endl;
getch(); }
else if (pilihan==2) {
cout << "Anda Memilih menu 2\n";
cout << "Tekan ENTER untuk kembali ke menu
utama\n"<<endl;
getch(); }
else if (pilihan==3) {
cout << "Anda Memilih menu 3\n";
cout << "Tekan ENTER untuk kembali ke menu
utama\n"<<endl;
getch(); }
else if (pilihan==4) {
system ("exit"); }
}
while (pilihan != 4);
}

Output Program
Penjelasan Program:

Program di atas memerintahkan user untuk memasukkan nilai 1/2/3/4, apabila


user memasukkan nilai pilihan sama dengan 1 maka akan keluar “Anda Memilih
menu 1”kemudian user menekan enter akan kembali ke menu awal, ketika user
memasukkan nilai pilihan sama dengan 2 maka akan keluar “Anda Memilih menu
2” kemudian user menekanenter dan akan kembali lagi ke menu awal, apabila user
memasukkan nilai pilihan sama dengan 3 maka akan keluar “Anda Memilih menu
3” kemudian user menekan enter akankembali ke menu awal, pada saat user
memasukkan nilai pilihan sama dengan 4 makaprogram akan exit. Karena
program ini menggunakan perulangan do-while, pada saat usermemasukkan nilai
pilihan tidak sama dengan 1/2/3/4 maka akan kembali ke awal yaitu menupilihan.
Penggunaan getch(); berfungsi untuk tidak menampilkan karakter dari tombol
yangditekan, berguna membaca sebuah karakter tanpa perlu menekan enter,
dipakai juga untukmembaca tombol spasi, ataupun tab.

BAB VII
PERULANGAN BERSARANG

7.1 Tujuan Praktikum


Setelah mempelajari bab ini diharapkan mahasiswa mampu mengenal dan
memahami penggunaan statement perulangan perulangan bersarang, dan bisa
membuat program sederhana dengan menerapkan konsep perulangan.
7.2 Dasar Teori
Pengertian Perulangan bersarang (Nested Loop)
Perulangan bersarang adalah sebutan untuk perulangan di dalam
perulangan. Konsep seperti ini sering dipakai untuk memecahkan masalah
programming yang cukup kompleks. Semua jenis perulangan bisa dibuat
dalam bentuk perulangan bersarang, termasuk perulangan FOR, WHILE dan
DO WHILE. Dalam bahasa inggris, perulangan bersarang ini dikenal dengan
sebutan nested loop.

Di dalam perulangan bersarang terdapat istilah outer loop dan inner loop.
Sesuai dengan namanya, outer loop adalah sebutan untuk perulangan luar,
sedangkan inner loop sebutan untuk perulangan dalam.

Tidak ada batasan seberapa banyak “kedalaman” dari sebuah perulangan


bersarang. Kita bisa saja membuat perulangan di dalam perulangan di dalam
perulangan, dst. Tentu saja semakin banyak perulangan yang “bersarang”,
kode programnya juga akan makin kompleks.

7.3 Hasil Dan Pembahasan


Contoh program struktur perulangan adalah sebagai berikut:

#include <iostream>

using namespace std;

int main ()
{

int n,j,k;

cout<< "Masukan Panjang Pola = ";

cin>>n;

for(int i=1;i<=n;i++){

for (j=1;j<i;j++){

cout<<" ";

for (k=n;k >= i;k--){

cout<<"*";

cout<<endl;

cin.get();

return 0;

Berikut merupakan hasil dari program di atas:


BAB VIII
POINTER

8.1 Tujuan Praktikum


Tujuan dari mempelajari Modul 8 “POINTER” ini agar mahasiswa mampu:
1. Mengetahui arti dalam fungsi pinter dadlam pemrograman
2. Memahami penggunaan pointer dalam listing program
3. Mengetahui keunggulan pointer pada suatu program
4. Membuat program sederhana dengan menerapkan konsep pointer.

8.2 Dasar Teori


A. Pengertian Pointer
B.1 Pengertian Pointer:
Pointer(variabel penunjuk) adalah suatu variabel yang berisi alamat
memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek
lain (biasanya variabel lain) di dalam memori. Contoh jika sebuah variabel
berisi alamat dari variabel lain variabel pertama dikatakan menunjuk ke
variabel kedua.
B.2 Operator
B.2.1 Operator pointer
a. Pointer Operator & (Operator Diference)
1. Operator & bersifat unary (hanya memerlukan satu buah
operand saja)
2. Operator & menghasilkan alamat dai operandnya
b. Poinetr Operator * (Operator Reference)
1. Operator * bersifat unary (hanya memerlukan satu buah operand
saja)
2. Operator * menghasilkan nilai yang berada pada sebuah alamat
Pointer : variabel yang berisi alamat memori.
Keterangan:
a. Type
adalah
tipe
dasar
pointer
b. Variable
name adalah nama variabel opinter
c. * adalah operator untuk mengembalikan nilai variabel pada
alamatnya ditentukan oleh operand. Contoh 8.0:
B.2.2 Operator aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika
dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi
penambahan dan operasi pengurangan. Operasi penambahan suatu nilai
menunjukkan lokasi data berikutnya (indexs selanjutnya) dalam memori.
Begitu juga operasi pengurangan. Contoh:
Opeartor logika:
Input data melalui pointer:
Anda dapat juga menginputkan suatu data dalam
keadaan varibel dengan menggunakan pointernya.
Ingat menginputkan data dengan scanf) membutuhkan alamat dari variabel
yang bersangkutan. Karena ptr_x merupakan alamat dari variabel x maka
ptr_x dapat digunakan menjadi scanf((). Jadi pernyataan:

scanf(“%d” ptr_x)sama dengan pernyataan scanf(“%d” &x)

Dimana &x juga menunjukkan alamat dari vairabel x.

Kelebihan menggunakan pointer:

a. Untuk menciptakan data struktur yang kompleks


b. Memungkinkan suatu fungsi untuk menghasilkan lebih dari satu nilai
c. Memiliki kemampuan untuk mengirimkan alamat suat fungsi ke fungsi
yang lain
d. Penanganan terhadap array dan string akan lebih singkat dan efisien
e. Memungkinkan untuk berhubungan langsung ke hadware
f. Memungkinkan untuk berhubungan langsung dengan parameter
command line.
g. Kemampuan bekerja dengan memmori yang telah dialokasikan secara
dinamik.

Macam – macam Pointer

1. Pointer Bertipe Void

Pada C++ terdapat pointer yang dapat menunjuk ke tipe data apapun,
po¬inter semacam ini dideklarasikan dengan tipe void sehingga sering
dikenal dengan istilah Void Pointer. Berikut ini contoh listing program
yang menggunakan void pointer.
2. Pointer Aritmetika
Elemen-elemen array biasanya diakses melalui indeksnya, sebenarnya ada
cara lain yang lebih efisien, yaitu dengan menggunakan pointer. Pointer
semacam ini disebut dengan istilah pointer aritmetika. Konsep dasar dari
pointer aritmetika ini adalah melakukan operasi aritmetika terhadap
variabel yang bertipe pointer.

3. Pointer NULL

Pada saat program dijalankan, pointer akan menunjuk ke alamat acak pada
memori, sehingga diperlukan inisialisasi agar hal tersebut tidak terjadi.
Dalam C++ terdapat sebuah cara untuk membuat pointer tidak menunjuk
ke alamat manapun, yaitu dengan mengisikan pointer tersebut dengan nilai
NULL. Karena hal inilah maka pointer tersebut sering dinamakan pointer
NULL (NULL Pointer).Sebagai contoh kita mempunyai pointer p, dan kita
ingin melakukan inisialisasi pada pointer tersebut dengan nilai NULL
Operasi-operasi pada pointer:
1. Operasi penugasan
Suatu variabel pointer seperti halnya variabel yang lain, juga bisa
mengalami operasi penugasan. Nilai sari suatu variabel pointer dapat
disalin ke variabel pointer yang lain.
2. Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika
dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi
penambahan dan pengurangan.
3. Operasi Logika
Bahaya menggunakan pointer:

1. Bahaya yang mungkin ada dengan pointer sebagai moniker: memory


leak, double delete, invalid memory access. Semuanya dapat dihindari
dengan ownership analysis yang bagus (pada setiap saat, harus diketahui
pihak mana yang bertanggung jawab mendelete sebuah object). Jika hal
ini sulit dilakukan, misalnya karena shared ownership, anda dapat
menggunakan smart pointer atau garbage collector
2. Bahaya yang mungkin ada dengan pointer sebagai iterator: array out of
bound. Salah satu cara yang efektif menghindari hal ini adalah dengan
menggunakan standard algorithma
3. Bahaya yang mungkin ada dengan pointer sebagai abstraksi fixed
memory : Tidak tahu, tetapi ini bukan mainan sembarang programmer.
8.3 Hasil dan Pembahasan
#include<iostream.h> // hader file
int main () // deklarasi fungsi utama main
{
long *p; // pendeklarasian variabel p dengan tipe data long
yang juga termasuk pemanggilan pointer
long x; // deklarasi variabel x dengan tipe data long
p=&x; // pemanggilan nilai x yang dilakukan oleh operator
diference
x=15;//mengisikan 15 ke dalam variabel x\
cout<<"nilai X= "<<x<<endl; // output program yang akan
menampilkan nilai x=15
cout<<"nilai *P="<<*p<<endl; // ouput nilai p yang akan
tampil dikarenakan nilainya dipanggil oleh operator
reference
cout<<"nilai P="<<p<<endl;
cout<<"nilai &X= "<<&x<<endl<<endl;
*p=25;//mengisikan 25 ke variabel *p
cout<<"nilai X= "<<x<<endl;
cout<<"nilai *P="<<*p<<endl;
cout<<"nilai P="<<p<<endl;
cout<<"nilai &X= "<<&x<<endl<<endl;
return 0;
}
Output Program :
Deskripsi Program :
Program ini diawali dengan header file iostream dimana header file iostream akan
menerima syntax cout ataupun cin. Deklarasi variabel pada program ini
menggunakan tipe data long dengan dua variabel p dan x, dimana pada
pendeklarasian variabel p terdapat pointer operator reference yaitu * yang
berfungsi sebagai penghasil nilai pada alamat operandnya. Kemudian terdapat
sebuah proses dimana variabel p=&x yang berarti variabel p nanti akan
menampilkan alamat dari operand p. Lalu terdapat pula konstanta x yang bernilai
15.
Jalannya program ini dimulai dengan pendeklarasian variabel hingga program
ketika di excute aan tampil kalimat nilai X = 15 pada layar, nilai 15 berasal dari
konstanta yang telah dibuat bahwa x=15. Kemudian setelah itu pada layar juga
akan tampil kalimat nilai *p =15, nilai 15 berasal dari pemanggilan yang
dilakukan oleh pointer operator reference yang akan menghasilkan nilai yang
dituju pada alamat pointer. Setelah itu pada layar terdapat tampilan nilai p
=0x22ff50 nilai tersebut dikarenakan script tersebut memanggil alamat nilai p
yang terdapat pada komputer. Ini hanya bisa dilakukan oleh pointer operasi
diference, yiaitu pemanggil alamat operand yang dituju, sehingga yang tampil
adalah alamat &x pada komputer, sebab p=&x. Aturan ini juga berlaku pada
tampilan nilai di kalimat selanjutnya.
Untuk nilai X= 25 dikarenakan *p=25 dimana *p=&X. Kemudian untuk tampilan
yang kedua nilai 25 diperoleh dengan pemanggilan pointer operasi reference yaitu
*p=25. Nilai pada kalimat selanjutnya sama seperti penjelasan diatas, yaitu
pemanggilan alamat operand yang dituju.
BAB IX

FUNGSI PROSEDUR BERSARANG

9.1 Tujuan

Mahasiswa memahami:
1. Prosedur bersarang
2. Variabellokal dan variable global
3. Operasi partisi
4. Algoritma quick sort

9.2 Dasar Teori

Suatu prosedur Maple dapat didefinisikan di dalam procedure Maple


yang lain. Perintah mapuntuk menerapkan suatuoperasipada
setiapunsur dari suatu tipe struktur. Misalnyauntuk membagi
setiapunsurdari suatu list dengan suatubilangan

Perintah map juga dapat digunakan dalam prosedur. Prosedur berikut


adalah untuk membagi setiapunsur dari list denganunsur pertama dari list
tersebut

Dalamprosedur ini Maple menggunakan map sebagai contoh dari prosedur


bersarangyang menyatakan vdalam map sebagaiv yang sama dalam
proseduryanglebih luar, yaitunest.

A. Variabel Lokal dan Variabel Global


Selanjutnya akan dijelaskanbagaimana Maple menggunakan variabel
lokal danvariabel global. Ketika membuat prosedur, sebaiknya dinyatakan
secara eksplisit yang mana

variabel lokal dan manavariabel global. Dalamprosedur nest di atas,


variable dalam perintah map mengambil nilai dari proseduryang
mengelilinginya. Bagaimana jika variabelv didefinisikan sebagai
variabellokal?

B. Algoritma QuickSort

Algoritmapengurutan adalahhal yang menarik dalam ilmu komputer.


Algoritma quick

sort berikut adalahalgoritmaklasik. Kunci untuk memahami algoritma ini


adalah dengan memahami operasi dari partisi. Teknik pengurutannya adalah
mengambil satu bilangan

dari array yangakan diurutkan. Lalume-reposisibilangan tadi

1. Ambil satu bilangandari arrayyangakandiurutkan.


2. Reposisibilangan-bilangandalam array yang kurang dari
bilanganyang dipilihtadidi satu sisi array dan reposisibilangan-
bilangan dalam arrayyanglebih dari bilangan yang dipilih di sisi yang
lain.
3. Sisipkan bilanganyang dipilihdi antara kedua kelompok ini.
Di akhir partisi, belum semua array terurut, karenabilanganyang kurangatau lebih
dari bilanganyang dipilihmasih seperti semula. Prosedurini baru membagi array
ke dalam dua array yanglebih kecilyanglebih mudahuntuk diurutkan Prosedur
partition

menggunakan array untuk memasukkan list unsur dalam array dapat diubah
langsung. Prosedur quicksort lebih mudahuntuk dipahami jika terlebih dulu
memahami prosedur partition.

Maple menyatakan i, j, dan x local karena prosedur partition menyatakannya secara

eksplisit. Prosedur partition juga secara eksplisit menyatakannyauntuk A, tetapi A


adalah parameter, bukan variable lokal. Karenatidak ada pernyataaan untuk nama
eval, Maple

menjadikannyanama global yang mengacupada perintaheval. Setelah mempartisi


array berikut, semua unsur yang kurang dari 3 disimpan sebelum 3,
danunsuryanglebih dari 3 disimpan setelah 3.

Tahap akhir dalamprosedur qick-sort adalahmenyisipkan prosedur partition ke


dalam proseduryanglebih luar. Pertama proseduryanglebih luarmendefinisikan
subprosedur partition, lalumempartisi array.
Maple menentukanvariabel A danp dalam subprosedur partition didefinisikan
oleh parameter dan variabellokal dari prosedur quicksort yanglebih luar.

1.3 Hasil Dan Pembahasan


#include <iostream>

using namespace std;

// deklarasi fungsi

int sum(intn);

int main(){
intnumber, result;

printf("Enter a positive integer: ");


scanf("%d", &number);

result = sum(number);
printf("sum = %d", result);

return 0;
}

// definisi fungsi
int sum(int num){
if (num!=0)
return num + sum(num- 1); // fungsi sum() memanggil dirinya sendiri else
return num;
}

OUTPUT

Mengapahasilnya bisa 21?

Karenakita menginputkan nilai 6, maka akan sama dengan:

1
BAB X

ARRAY

10.1 Tujuan Praktikum


1. Mahasiswa dapat memahami definisi dan kegunaan array
2. Mahasiswa dapat menggunakan fungsi array untuk memanipulasi string
3. Mahasiswa dapat mengetahui bagaimana mengimplementasikan array
dalam program.
10.2 Dasar Teori
Array adalah kumpulan dari nilai nilai data bertipe sama dalam urutan
tertentu yang menggunakan sebuah nama yang sama. Nilai data di suatu array
disebut dengan elemen elemen array. Letak urutan dari elemen-elemen
array di tunjukkan oleh suatu subscript atau indeks.

1. ARRAY DIMENSI SATU


a. Setiap elemen array dapat di akses melalui indeks
b. Indeks array secara default di mulai dari 0.
c. Deklarasi array dalam bentuk umum : Bentuk Umum :
Tipe_array nama_array[ukuran];

Contoh :

int Nilai [4]

2. ARRAY DIMENSI DUA


Array dua dimensi merupakan array yang terdiri dari m buah baris dan n
buah kolom. Bentuknya dapat berupa matriks atau tabel.

Bentuk Umum :

1
Tipe_array Nama_array[baris][kolom];

Contoh :

Cara akses :

data_lulus[0][1]=540

Untuk mengisi dan menampilkan isi elemen array ada dua cara yaitu :

a. Row Major Order (secara baris per baris)


b. Column Major Order (secara kolom per kolom)
Inisialisasi :

3. ARRAY DIMENSI BANYAK


Array multi dimensi merupakan array yang mempunyai ukuran lebih dari
dua. Bentuk

pendeklarasian array sama saja dengan array dimensi satu maupun array
dimensi dua.

Bentuk Umum :

1
tipe_elemen_array nama_array[ukuran1][ukuran2]...[ukuranN];

Contoh :

int data_huruf[2][8][8];

Inisialisasi :

10.3 Hasil dan Pembahasan


#include <iostream.h>
#include <conio.h>
#include <windows.h>
int main()
{
system ("color F0");
int index, nilai[10];
system ("cls");
cout<<"Masukkan nilai 10 mahasiswa\n";
for(index=1;index<=10;index++)
{
cout<<"Mahasiswa "<<index<<"\t:";
cin>>nilai[index];
}
cout<<"Nilai mahasiswa yang telah dimasukkan\n";

1
for (index=1; index<=10; index++)
{
cout<<nilai[index]<<" \t";
}
getch();
}
Output Program

Penjelasan Program:
Program di atas merupakan program sederhana, yang ditujukan untuk
menampilkan nilai mahasiswa yang telah diinputkan dalam array satu dimensi
secara berurutan mulai 1-10 dengan keluaran yang memiliki jarak antara nilai
yang satu dengan nilai yang lain, cara kerja program diatas user
mamasukkan inputan mulai dari ke 1 sampai ke 10, kemudian program
ini menggunakan for untuk perulangan seperti di script for
(index=1;index<=10;index++)maksudnya adalahnilai atau angka dimulai
dari 1, apakah lebih kecil dari 10 atau tidak. Untuk script
“mahasiswa”<<indexartinya adalah ketika user memasukkan nilai
mahasiswa ke 1, kemudian di enter maka program berikutnya akan
memasukkan nilai ke 2 begituhingga mahasiswa ke 10 karena batas dari
program diatas 10.

1
BAB XI

POINTER

11.1 Tujuan Praktikum


Setelah mempelajari bab ini diharapkan mahasiswa akan mampu :
1. Mengetahui arti dan fungsi pointer dalam pemrograman.
2. Memahami penggunaan pointer dalam listing program.
3. Mengetahui keunggulan pointer pada suatu program.
4. Membuat program sederhana dengan menerapkan konsep pointer.
11.2 Dasar Teori
Pada programmer pemula hal yang sulit dipahami adalah pointer. Pointer
adalah pada dasarnya sama dengan veriabel lain. Dengan pointer setiap
variable diletakan pada alamat memori yang besarnya cukup untuk
menampung nilai dari sebuah variable tipe data. Pada sebuah komputer PC
misalnya satu byte data secara umum dialokasikan untuk tipe data char, 2 byte
untuk tipe data short, 4 byte untuk tipa data int, long dan float serta 8 byte
untuk tipe data double. Tiap-tiap byte data memori mempunyai alamat yang
unik. Sebuah variable alamat merupakan alamat dimana sebuah byte data
pertama dapat dialokasikan. Sebagai contoh misalnya dapat didefinisikan
dalam program sebagai berikut :
char huruf;
short angka;
float amount;
Sehingga pengaturan memorinya dapat diilustrasikan sebagai berikut :

Pada gambar diatas variable letter diletakan pada alamat 1200, number pada
alamat 1201 dan amount pada alamat 1203.

Ketika programmer mendeklarasikan sebuah variable, sama halnya dengan


menginformasikan compiler dua sesuatu yaitu : nama variable dan tipe

1
variable. Misalnya kita akan mendeklarasikan tipe variable integer dengan
nama variable k sehingga dapat ditulis: Int k

Pada tipe variable integer merupakan tipe data yang digunakan compiler
dimana memori yang terpakai adalah dua byte.

Setiap kali komputer menyimpan data, maka sistem operasi akan


mengorganisasikan lokasi pada memori pada alamat yang unik. Misal untuk
alamat memori 1776, hanya sebuah lokasi yang memiliki alamat tersebut. Dan
alamat 1776 pasti terletak antara 1775 dan 1777. Dalam pointer, terdapat 2
jenis operator yang biasa digunakan.

Kegunaan pointer yang utama adalah untuk menyimpan alamat memori


dari sebuah variabel (data type atau object dari class). Selain menyimpan
alamat dari variabel, pointer juga dapat digunakan untuk menyimpan alamat
dari sebuah fungsi (function pointer).

Function pointer telah digunakan sejak dikenalkannya bahasa C, dan


banyak digunakan untuk sebuah fungsi callback atau untuk meningkatkan
readability dari sebuah code.

Sebenarnya jika programer akan mendeklarasian sebuah variable, seorang


programer tidak diharuskan menentukan lokasi sesungguhnya pada memory,
karena hal ini akan dilakukan secara otomatis oleh kompiler dan operating
sysem pada saat run-time.

Jika ingin mengetahui dimana suatu variable akan disimpan, dapat


dilakukan dengan memberikan tanda ampersand (&) didepan variable , yang
berarti "address of". Perhatikan

contoh dibawah ini:

ted = &andy;

Akan memberikan variable ted alamat dari variable andy, karena variable andy
diberi awalan karakter ampersand (&), maka yang menjadi pokok disini
adalah alamat dalam memory, bukan isi variable. Misalkan andy diletakkan
pada alamat 1776 kemudian

dituliskan instruksi sebagai berikut :

andy = 25; fred = andy; ted = &andy;

Maka hasilnya adalah sebagai berikut:

1
Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan
secara langsung dengan memberikan awalan operator asterisk (*) pada
identifier pointer, yang berarti "value pointed by". Contoh :

beth = *ted;

(dapat dikatakan:"beth sama dengan nilai yang ditunjuk oleh ted") beth = 25,
karena ted dialamat 1776, dan nilai yang berada pada alamat 1776 adalah 25.

Ekspresi dibawah ini semuanya benar, perhatikan pernyataan program


dibawah :

andy == 25

&andy == 1776

ted == 1776

1
*ted == 25

Ekspresi pertama merupakan assignation bahwa andy=25;. Kedua,


menggunakan operator

alamat (address/derefence operator (&)), sehingga akan mengembalikan


alamat dari variabel

andy. Ketiga bernilai benar karena assignation untuk ted adalah ted = &andy;.
Keempat

menggunakan reference operator (*) yang berarti nilai yang ada pada alamat
yang ditunjuk

oleh ted, yaitu 25. Maka ekspresi dibawah ini pun akan bernilai benar :

*ted == andy

Deklarasi variabel bertipe pointer

Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek


lain. Pada

kenyataan yang sebenarnya, variabel pointer berisi alamat dari suatu obyek
lain (yaitu obyek

yang dikatakan ditunjuk oleh pointer). Sebagai contoh, px adalah variable


pointer dan x

adalah variabel yang ditunjuk oleh px. Kalau x berada pada alamat memori
(alamat awal)

1000, maka px akan berisi 1000. Sebagaimana diilustrasikan pada gambar di


bawah ini:

1
Dimana type merupakan tipe dari data yang ditunjuk, bukan tipe dari
pointernya. Dengan

tipe dapat berupa sembarang tipe yang sudah dibahas pada bab-bab
sebelumnya, maupun

bab-bab berikutnya. Adapun nama_var_pointer adalah nama dari variabel


pointer. Perhatikan

contoh berikut ini:

int *px;

char *pch1, *pch2;

float * greatnumber;

Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk


ke suatu data

bertipe int, sedangkan contoh kedua masing pch1 dan pch2 adalah variabel
pointer yang

menunjuk ke data bertipe char.

1
Inisialisasi Pointer

Dalam melakukan pemrogaman dengan menggunakan pointer yang


pertama perlu

dilakukan dalam membuat program adalah dengan melakukan inisialisasi


pointer tersebut.

Untuk lebih jelasnya perhatikan contoh dibawah ini:

int number; int *tommy = &number;

pernyataan diatas akan sama atau ekivalen dengan pernyataan dibawah ini:

int number; int *tommy; tommy = &number;

Seperti pada array, inisialisasi isi dari pointer dapat dilakukan dengan
deklarasi seperti contoh

berikut :

char * terry = "hello";

Misalkan kata "hello" disimpan pada alamat 1702 dan seterusnya, maka
deklarasi tadi dapat

digambarkan sebagai berikut:

1
terry berisi nilai 1702 dan bukan 'h' atau "hello", walaupun 1702 menunjuk
pada karakter

tersebut. Sehingga jika akan dilakukan perubahan pada karakter 'o' diganti
dengan tanda '!'

maka ekspresi yang digunakan ada 2 macam :

terry[4] = '!'; *(terry+4) = '!';

Penulisan terry[4] dan *(terry+4), mempunyai arti yang sama. Jika


digambarkan:

Perhatikan contoh program dibawah, dimana char memerlukan 1 byte, short

memerlukan 2 bytes dan long memerlukan 4. Terdapat 3 buah pointer :

char *mychar;

short *myshort;

long *mylong;

ekspresi diatas akan menunjuk pada lokasi dimemory masing-masing 1000,


2000 and 3000,

sehingga jika dituliskan :

mychar++; myshort++; mylong++;

mychar, akan bernilai 1001, myshort bernilai 2002, dan mylong bernilai 3004.
Alasannya

adalah ketika terjadi pertambahan maka akan ditambahkan dengan tipe yang
sama seperti

1
yang didefinisikan berupa ukuran dalam bytes.

Perhatikan ekspresi dibawah ini :

*p++; *p++ = *q++;

Ekspresi pertama equivalen dengan *(p++) dan yang dilakukan adalah


menambahkan p

(yaitu alamat yang ditunjuk, bukan nilai yang dikandungnya). Ekspresi kedua,
yang

dilakukan pertama adalah memberikan nilai *q ke *p dan kemudian keduanya


ditambahkan 1

atau dengan kata lain :

*p = *q; p++; q++;

Tipe pointer void merupakan tipe khusus. void pointers dapat menunjuk pada
tipe

data apapun, nilai integer value atau float, maupun string atau karakter.
Keterbatasannya

adalah tidak dapat menggunakan operator asterisk (*), karena panjang pointer
tidak diketahui,

sehingga diperlukan operator type casting atau assignations untuk


mengembalikan nilai void

1
pointer ketipe data sebenarnya.

Keunggulan menggunakan pointer :

1. Untuk menciptakan data struktur yang kompleks.


2. Memungkinkan suatu fungsi untuk menghasilkan lebih dari satu nilai.
3. Memiliki kemampuan untuk mengirimkan alamat suatu fungsi ke fungsi
yang lain.
4. Penanganan terhadap array dan string akan lebih singkat dan efisien.
5. Memungkinkan untuk berhubungan langsung ke hardware.
6. Memungkinkan untuk berhubungan langsung dengan paramenter
command line.
7. Kemampuan bekerja dengan memori yang telah dialokasikan secara
dinamik.
11.3 Hasil dan Pembahasan
//header file yang melibatkan cout
#include <iostream.h>
#include <windows.h>
//deklarasi fungsi utama
int main()
{
system("color F0");
//deklarasi pointer *pBil
int *pBil;
//deklarasi variabel bilX=77
int bilX=77;
pBil=&bilX;
//output nilai awal
cout<<"Isi bilX = "<<bilX<<endl;
cout<<"Nilai yang ditunjuk pBil = "<<*pBil<<endl;
//pointer *pBil menunjuk *pBil+3
*pBil=*pBil+3;
//output nilai sekarang
cout<<"Isi bilX sekarang= "<<bilX<<endl;
cout<<"Nilai yang ditunjuk pBil = "<<*pBil<<endl;
return 0;
}

1
Output Program :

Penjelasan Program :
Program di atas digunakan untuk menampilkan suatu bilangan, lalu
menambahkannya sesuai
dengan yang sudah dirumuskan. Nilai awal bilX=77. Karena pBil=&bilX,
maka akan
menampilkan hasil nilai *pBil sama dengan 80, karena *pBil=*pBil+3;

1
BAB XII

STRUCT

12.1 Tujuan Praktikum

Tujuan daripraktikum ini adalah :

1 Mahasiswa dapat memahami definisi dan kegunaan struct

2 Mahasiswa dapat mengimplementasikan struct dalam program

12.2 Dasar Teori

Pengertian Struct

Struct merupakan tipe data bentukan yang berisi kumpulan variabelyang


bernaung dalam suatu nama yang sama dan memiliki kaitan satu samalain.
Variabel-variabel yang menjadi anggota struct disebut dengan elemen struct
. Berbeda dengan array

yang hanya berupa kumpulan variabel yang bertipe data sama, struct bisa
memiliki variabel-variabel yang memiliki tipedata yang sama atau
berbeda, bahkan bisa menyimpan variabel yang bertipe array atau struct
itu sendiri.[8]Struct yang di dalamnya terdapat variabel atauelemen array
dikenal dengan istilah struct of array. Selain itu, ada pula array yang
setiap data elemennya bertipe struct yang dikenal dengan istilah array of
struct . Umumnya dipakai untuk menyimpan objek data yang
terstruktur,misal: data mahasiswa, karyawan, buku, barang, dsb.[7].

Deklarasi

Untuk membuat tipe data struktur dalam C++, harus


dideklarasikandengan menggunakan kata kunci struct . Berikut ini bentuk
umum pendeklarasian tipe data struct dalam C++ :

struct nama_struct {

1
tipe_data nama_variabel;

tipe_data nama_variabel;

...

};

Struktur dapat dipandang sebagai sebuah tipe data, sehingga


dapatdideklarasikan sebagai sebuah variabel biasa, variabel pointer ,
pointer sebagai array. Dalam pendeklarasian struktur harus diakhiri
dengan tanda titik komaatau semicolon (;).Apabila telah membuat tipe
data bentukan baru yang berjenis struktur tertentu akan digunakan di
dalam pendeklarasian sebuahvariabel. Pada saat itu, harus dilakukan
pengaksesan terhadap isi dan strukturtersebut dengan menggunakan
operator titik (.).[8]3.

Cara Akses

Bila struktur yang dideklarasikan adalah sebuah variabel biasa,


maka cara pengaksesan anggota struktur menggunakantandatitik ( .).[7]

a. Bila struktur yang dideklarasikan sebagai sebuah variabel pointer ,


makacara pengaksesan anggota struktur menggunakantanda (->).[7]

b. Bila struktur yang dideklarasian adalah pointer sebagai array,


maka cara pendeklarasiannya menggunakantandatitik (.).[7]

1
12.3 Hasil Dan Pembahasan

#include <iostream>

#include <conio>

#include <stdio>

struct orang{

char nama[50];

int mesin;

};

struct kendaraan{

charmerk[50];

int mesin;

};

int main(){

intnp,nv;

struct orangp[100];

struct kendaraan v[100];

cout<<"Jumlah Pemilik : ";

cin>>np;

cout<<"Jumlah Kendaraan: ";

cin>>nv;

if(np>nv){cout<<"Tidak Mungkin !";}

else

{clrscr();
2
cout<<"===== Data Pemilik ====";

for(int i=0;i<np;i++){

cout<<"\nNama Pemilik : ";gets(p[i].nama);

cout<<"No. Mesin : ";cin>>p[i].mesin;

for(intj=0;j<i;j++){

if(p[i].mesin==p[j].mesin){

cout<<"No Mesin Sudah Ada! Silahkan diulangi!!"; getch();


i--;} }}

clrscr();

cout<<"===== Data Kendaraan =====";

for(int i=0;i<nv;i++){

cout<<"\nMerk Kendaraan : ";gets(v[i].merk);

cout<<"No. Mesin : "; cin>>v[i].mesin;}

clrscr();

intx=2;for(int i=1;i<=71;i++){cout<<"-";}

gotoxy(1,x); cout<<"| Merk ";

gotoxy(24,x); cout<<"| No Mesin";

gotoxy(48,x); cout<<"| Nama Pemilik";

2
gotoxy(71,x); cout<<"|\n";

for(int i=1;i<=71;i++){cout<<"-";}

x+=2;

//MASUKKAN DATA YANG SUDAH DIINPUT

for(int i=0;i<np;i++){

for(intj=0;j<nv;j++){

if(v[j].mesin==p[i].mesin){

gotoxy(1,x); cout<<"| "<<v[j].merk;

gotoxy(24,x); cout<<"| "<<v[j].mesin;

gotoxy(48,x); cout<<"| "<<p[i].nama;

gotoxy(71,x); cout<<"|\n";

for(intk=1;k<=71;k++){cout<<"-";}

x+=2;}}}}

getch();

3
Hasil Program

3
BAB XIII

PENGELOLAAN FILE EXTERNAL

13.1 Tujuan

Setelah mempelajari bab ini, diharapkan mahasiswa dapat:

1. Mengetahui jenis file teks maupun file biner.


2. Membedakan jenis file teks maupun file biner.
3. Menangani file teksmapun file biner dalam Bahasa C.
4. Membuat aplikasi yang melibatkan pengelolaan file teks maupun file
binerdalam BahasaC.

13.1 Dasar Teori

File adalah sebuah organisasi dari sejumlah record. Masing-masing

record bisaterdiri dari satu ataubeberapa field. Setiap field terdiri dari satu

ataubeberapa byte.

1. Membuka File

Untuk membuka atau mengaktifkan file, fungsi yang digunakan


adalah fungsifopen(). File dapat berupa file biner atau file teks. File
biner adalah file yang pola penyimpanan di dalam disk dalam bentuk
biner, yaitu seperti bentuk pada memori (RAM) komputer. File teks
adalah file yang pola penyimpanandatanya dalambentuk karakter.
Penambahanyang perlu dilakukan untukmenentukan mode teks atau
biner adalah“t” untuk file teks dan“b untuk file biner. Prototype
fungsi fopen() ada di header fungsi“stdio.h”

3
Bentuk umum:

file *fopen(char *namafile, char

*mode);

Keterangan :

namafile adalahnama dari fileyangakan dibuka/diaktifkan.

mode adalah jenis operasi fileyangakan dilakukanterhadap file.Jenis-jenis

operasi file:

r : menyarakan file hanya dapat dibaca (file harus sudah ada)

w : menyatakan file baru akan dibuat/diciptakan (file yang sudah adaakan

dihapus)

a : untuk membuka file yang sudah ada dan akan dilakukan proses

penambahan data (jika

file belum ada, otomatis akan dibuat)

r+ : untuk membuka file yang sudah ada dan akan dilakukan proses

pembacaan dan penulisan.

3
w+ : untuk membuka file dengan tujuan untuk pembacaan atau

penulisan.Jika file sudah


ada, isinya akan dihapus. a+ : untuk membuka
file, denganoperasi yang akan dilakukan

berupaperekaman maupun pembacaan. Jika filesudahada, isinya akan

dihapus.

Contoh:

pf = fopen(“COBA.TXT”, “w”);

Untuk menutup file, fungsi yang digunakan adalah fclose(). Prototype

fungsifclose() ada

diheader file“stdio.h”.Bentuk umum:

int fclose (FILE *pf);

atau

int fcloseall (void);

2. Memproses File

a. Menulis KarakterUntuk menulis sebuah karakter, bentuk yang


digunakan adalah

putc (intch, file *fp)

keterangan

fp adalah pointer file yang dihasilkan oleh fopen().

3
ch adalah karakteryangakan ditulis.

b. Membaca KarakterUntukmembaca karakter dari file, fungsi yang


digunakan adalah:

getc (file *fp);

Keterangan:.

fp adalah pointer file yang dihasilkan oleh fopen().Fungsi feof(),


digunakan untuk mendeteksi akhir file pada saat membacadata
foef (file *fp).

c. Membaca dan Menulis StringFungsiuntukmembaca dan menulis

string adalah:

fgets() dan fputs().Bentuk umumnya:

fgets (char *str, intp, file *fp);

fputs (char *str, file *fp);

d. Membaca dan Menulis Blok Data

Fungsiuntukmembaca dan menulis blok data adalah: fread() dan

fwrite().Bentuk

umumnya:

fread (void *buffer, intb_byte, int c, file *fp);

fwrite (void *buffer, intb_byte, int c, file *fp);

3
3
Keterangan:.

a. buffer adalah pointer ke sebuah area dimemori yang menampung


datayang akan dibaca dari file..
b. byte adalah banyaknya byte yangakan dibaca atau ditulis kefile..
c. adalah banyaknya item yang dibaca/ditulis.
d. Membaca dan Menulis File yang TerformatJika diinginkan, data
bilangan dapat disimpanke dalam file dalam keadaanterformat,
fungsi yang digunakan adalah:

fprintf (ptr_file,“stringcontrol”, daftar argument);

fscanf (pts_file, “stringcontrol”, daftar argument);

File sekuensial berisi rekord-rekord data yang tidak mengenal posisi


baris ataunomor record pada saat aksesnya, dan setiap record
dapat mempunyai lebar yang berbeda- beda. Aksesterhadapnya
selalu dimulai dari awal file dan berjalan satu persatu menuju akhir
dari file. Dengan demikian, penambahan file hanya dapatdilakukan
terhadap akhir file, dan aksesterhadap baristertentu harus dimulai
dariawal file. Fungsi baku yang terkait dengan file sekuensial ini
antara lainadalah fprintf,fscanf, dan rewind.

3
13.3 Hasil Dan Pembahasan

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#define CTRL_Z 26

using namespace std;

int main(intargc, char* argv[]){

FILE *pf; /* pointer ke file */ char kar;

if((pf = fopen("COBA.TXT", "w")) == NULL) /* ciptakan file */

puts("File tak dapat diciptakan !\r\n");

exit(1); /* selesai */

while((kar=getche()) != CTRL_Z){

3
putc(kar, pf); /* tulis ke file */}

fclose(pf); /* tutup file */

getch();return 0;

Penjelasan program :

Program ini digunakan dengan cara user memasukkan sebuah kata ataupun
kalimatkemudian tekan enter selanjutnya program akan
menuliskan sebuah file teks yang berformat .txt yang menyimpan
inputan dari user. Programmenggunakan pointersebaga i penunjuk nama file
yang digunakan untuk menyimpan input. Header file yangdipakai
iostream.h (memanggil perintah exit), conio.h (memanggil perintah
getch, berfungsi menahan layar), stdio.h (memanggil perintah puts dan
putc), #define CTRL Z 26 untuk mendefinisikan bahwa CTRL Z bernilai
26. Perintah fopen untuk membukafile sedangkan

fclose untuk menutup file.

3
3

Anda mungkin juga menyukai