Anda di halaman 1dari 76

KATA PENGANTAR

Puji dan syukur kami panjatkan kehadirat Allah SWT karena atas
rahmat dan karunia-Nya kami dapat menyelesaikan makalah ini tepat pada waktu.

Tak lupa kami juga menghaturkan terima kasih yang sebesar-besarnya kepada
Bapak dosen kami Prof. Dr.-ing. Soewarto Hartadienata selalu mendukung
kami dalam pembelajaran Algoritma dan Pemrograman I.

Dalam makalah ini berisikan project dari mahasiswa, yang berisi Analisis
Masalah,Algoritma, Flowchart dan Uji coba project.

Demikian yang kami sampaikan, kami merasa masih banyak sekali


kekurangan dalam penyusunan makalah ini, Oleh karena itu, segala saran
dan kritik yang membangun dari yang lebih berkompeten di bidang
Algoritma dan Pemrograman I, kami terima dengan penuh rasa terima kasih.

Akhir kata, kami berharap makalah ini dapat bermanfaat bagi para pembaca,
khususnya bagi yang akan mempelajari Algoritma dan Pemrograman I.

Bogor, September 2015

Penyusun

i
DAFTAR ISI
Cover

Kata Pengantar .............................................................................................. i

Daftar Isi ....................................................................................................... ii

BAB I Menghitung Luas Segitiga .................................................................. 1


1.1 Analisis Masalah dan Pencarian Solusi .......................................................... 1
1.2 Algoritma ..................................................................................................... 1
1.3 Flowchart ...................................................................................................... 2

1.4 Testing Program dan Hasil ............................................................................ 3

BAB II Menghitung Keliling Persegi Lima .................................................. 7

2.1 Analisis Masalah dan Pencarian Solusi .......................................................... 7


2.2 Algoritma ...................................................................................................... 7
2.3 Flowchart ...................................................................................................... 8
2.4 Testing Program dan Hasil ............................................................................. 9

BAB III Menghitung Rata-Rata ..................................................................... 13

3.1 Analisis Masalah Dan Pencarian Solusi ............................................................ 13


3.2 Algoritma .......................................................................................................... 13
3.3 Flowchart .......................................................................................................... 14
3.4 Testing Program Dan Hasil .............................................................................. 15

BAB IV Menghitung Nilai Rerata Menggunakan Looping ............................... 19

4.1 Analisis Masalah Dan Pencarian Solusi .......................................................... 19


4.2 Algoritma ....................................................................................................... 19
4.3 Flowchart ....................................................................................................... 20
4.4 Testing Program Dan Hasil ............................................................................ 21

ii
BAB V Membuat Program Rerata Dan Beda Menggunakan Looping .............. 26

5.1 Analisis Masalah Dan Pencarian Solusi .......................................................... 26


5.2 Algoritma ....................................................................................................... 26
5.3 Flowchart ....................................................................................................... 27
5.4 Testing Program Dan Hasil ............................................................................ 28

BAB VI Membuat Program Untuk Mencari Nilai Terbesar


Dan Nilai Terkecil ........................................................................... 34
6.1 Analisis Masalah Dan Pencarian Solusi .......................................................... 34
6.2 Algoritma ....................................................................................................... 34
6.3 Flowchart ....................................................................................................... 35
6.4 Testing Program Dan Hasil ............................................................................ 36

BAB VII Materi tentang Pointer ...................................................................... 41


7.1 Pointer ............................................................................................................ 41
7.2 Macam-macam Pointer ................................................................................... 43
7.3 Fungsi ............................................................................................................ 51

BAB VIII Membuat Program Dengan Menggunakan Sub Program (Fungsi)

Untuk Menghitung Jumlah Dengan Menggunakan Fungsi Input,Fungsi


Jumlah dan Fungsi Output ............................................................... 58
8.1 Analisis Masalah Dan Pencarian Solusi .......................................................... 58
8.2 Algoritma ....................................................................................................... 58
8.3 Flowchart ....................................................................................................... 59
8.4 Testing Program Dan Hasil ............................................................................ 60

ii
PROJECT 01
MENGHITUNG LUAS SEGITIGA
BAB I
MENGHITUNG LUAS SEGITIGA

1.1 Masalah Dan Pencarian Solusi

a. Masalah
Membuat Program Untuk Menghitung Luas Segitiga
b. Solusi
Luas Segitiga = 0.5 * Alas * Tinggi

1.2 Algoritma

a. Input
Baca Alas
Baca Tinggi

b. Proses
Luas Segitiga = 0.5 * Alas * Tinggi

c. Output
Tampil Alas,Tinggi
Tampil Luas Segitiga

1
1.3 Flowchart

2
1.4 Testing Dan Hasil Program

a. Souce code

// PROJECT : 01
// PROGRAM : MENGHITUNG LUAS SEGITIGA
// AOUTHOR : - FANI SUSANTI
// - FANY SYAFIRA NURUL KILAH
// - ELMA NOVITA DEWI
// NPM : - 0651 15102
// - 0651 15125
// - 0651 15074
// TANGGAL : 28 SEPTEMBER 2015

// MEMASANG HEADER / LIBRARY


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

using namespace std;

// MENGAWALI PROGRAM
main()
{

// MENDEKLARASIKAN KONSTANTA DAN/ATAU VARIABEL


char str[20];
float alas,tinggi,luas;

// MEMASANG NILAI KONSTANTA DAN/ATAU VARIABEL


luas=0.0;

// MEMBUKA INPUT FILE


ifstream file_in;
file_in.open("01_input.txt");

// JIKA 'INPUT FILE' TIDAK BISA DIBUKA, BERITAHU ERROR, PROGRAM


DIBERHENTIKAN
if(!file_in)
{

3
cout<<"INPUT FILE TIDAK BISA DIBUKA,ERROR,PROGRAM
DIHENTIKAN";
exit(-1);
}
else

// MEMBACA DATA FILE PADA 'INPUT FILE'


{
file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
alas=atof(str);
file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
tinggi=atof(str);
}

// MEMPROSES DATA
luas=0.5*alas*tinggi;

// MEMBUKA OUTPUT FILE


ofstream file_out;
file_out.open("01_output.txt");

// JIKA 'OUTPUT FILE' TIDAK BISA DIBUKA, BERITAHU ERROR,


PROGRAM DIBERHENTIKAN
if(!file_out)
{
cout<<"OUTPUT FILE TIDAK BISA DIBUKA,ERROR,PROGRAM
DIHENTIKAN";
exit(-1);
}
else

// MEMNULIS PADA OUTPUT FILE


{
file_out<<"Program selesai dieksekusi"<<endl;
file_out<<"Hasil Eksekusi Program adalah sebagai berikut:"<<endl;
file_out<<"------------------------------"<<endl;
file_out<<endl;
file_out<<"Alas Segitiga:"<<alas<<endl;
file_out<<"Tinggi Segitiga:"<<tinggi<<endl;
file_out<<"Luas Segitiga:"<<luas<<endl;
}

4
// MENUTUP INPUT FILE DAN OUTPUT FILE
file_in.close();
file_out.close();

// MENGAKHIRI PROGRAM
cout<<"Program Selesai Di Eksekusi";
cout<<endl;
cout<<"Silahkan Hasilnya dilihat pada 'OUTPUT FILE'";
cout<<endl;
}

b. Hasil program
Gambar Input

5
Gambar Hasil

6
PROJECT 02
MENGHITUNG KELILING PERSEGI LIMA
BAB II
MENGHITUNG KELILING PERSEGI LIMA

2.1 Masalah Dan Pencarian Solusi

a. Masalah
Membuat Program Untuk Menghitung Keliling Persegi Lima
b. Solusi
Keliling Persegi Lima = Sisi1 + Sisi2 + ….. + Sisi5

2.2 Algoritma

a. Input
Baca Sisi1, Sisi2,……., Sisi5

b. Proses
Keliling Persegi Lima = Sisi1 + Sisi2 + …… + Sisi5

c. Output
Tampil Sisi1, Sisi2,……, Sisi5
Tampil Hasil Keliling Persegi Lima

7
2.3 Flowchart

8
2.4 Testing Dan Hasil Program

a. Souce code

// PROJECT : 02
// PROGRAM : MENGHITUNG KELILING PERSEGI LIMA
// AUTHOR : - FANI SUSANTI
// - FANY SYAFIRA NURUL KILAH
// - ELMA NOVITA DEWI
// NPM : - 0651 15102
// - 0651 15125
// - 0651 15074
//TANGGAL : 01 OKTOBER 2015

//MEMASANG HEADER / LIBRARY


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

using namespace std;

// MENGAWALI PROGRAM
main()
{

//MENDEKLARASI KONSTANTA DAN/ATAU VARIABEL


char str[20];
float sisi1,sisi2,sisi3,sisi4,sisi5,keliling;

// MEMASANG NILAI KONSTANTA DAN/ATAU VARIABEL


keliling=0.0;

// MEMBUKA INPUT FILE


ifstream file_in;
file_in.open("02_input.txt");

// JIKA INPUT FILE TIDAK BISA DIBUKA, BERITAHU ERROR,


PROGRAM DIBERHENTIKAN
if(!file_in)
{
cout<<"INPUT FILE TIDAK BISA DIBUKA,ERROR,PROGRAM
DIBERHENTIKAN";
exit(-1);
}
else

9
// MEMBACA DATA FILE PADA 'INPUT FILE'
{
file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
sisi1=atof(str);

file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
sisi2=atof(str);

file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
sisi3=atof(str);

file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
sisi4=atof(str);

file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
sisi5=atof(str);
}

// MEMPROSES DATA
keliling = sisi1 + sisi2 + sisi3 + sisi4 + sisi5;

// MEMBUKA OUTPUT FILE


ofstream file_out;
file_out.open("02_output.txt");

// JIKA OUTPUT FILE TIDAK BISA DIBUKA, BERITAHU ERROR,


PROGRAM DIBERHENTIKAN
if(!file_out)
{
cout<<"OUTPUT FILE TIDAK BISA DIBUKA,ERROR,PROGRAM
DIBERHENTIKAN";
exit(-1);
}
else

// MENULIS HASIL PADA 'OUTPUT FILE'


{
file_out<<"Program selesai dieksekusi"<<endl;
file_out<<"Hasil Eksekusi Program adalah sebagai berikut:"<<endl;
file_out<<"-----------------------------"<<endl;
file_out<<endl;

10
file_out<<"Sisi 1 ="<<sisi1<<endl;
file_out<<"Sisi 2 ="<<sisi2<<endl;
file_out<<"Sisi 3 ="<<sisi3<<endl;
file_out<<"Sisi 4 ="<<sisi4<<endl;
file_out<<"Sisi 5 ="<<sisi5<<endl;
file_out<<"Keliling Persegi Lima="<<keliling<<endl;
}

//MENUTUP 'INPUT FILE' DAN 'OUTPUT FILE'


file_in.close();
file_out.close();

// MENGAKHIRI PROGRAM
cout<<"Program selesai dieksekusi";
cout<<endl;
cout<<"Silahkan hasilnya dilihat pada 'OUTPUT FILE'";
cout<<endl;
}

b. Hasil Program
Gambar Input

11
Gambar Hasil

12
PROJECT 03
MENGHITUNG RATA-RATA
BAB III

RATA-RATA

3.1 Masalah

Membuat Program Untuk Menghitung Rata-Rata

3.2 Pencarian Solusi

Jumlah=Bilangan1+Bilangan2+……+Bilangan5

Rerata=Jumlah/5

3.3 Algoritma

a. Input

Baca Bilangan1 ,Bilangan2,…….,Bilangan5

b. Proses

Jumlah=Bilangan1+Bilangan2+……+Bilangan5

Rerata=Jumlah/5

c. Output

Tampil Bilangan1, Bilangan2, ….., Bilangan5

Tampil Rerata

13
3.4 Flowchart

14
3.5 Testing dan Hasil Program
a. Source code

// PROJECT :03
// PROGRAM :MENGHITUNG RATA-RATA
// AUTHOR :-FANI SUSANTI
// :-FANY SYAFIRA NURUL KILAH
// :-ELMA NOVITA DEWI
// NPM :-0651 15 102
// :-0651 15 125
// :-0651 15 074
// TANGGAL : 07 OKTOBER 2015

// MEMASANG HEADER/LIBRARY
#include<iostream>
#include<fstream>
#include<stdio.h>
#include<stdlib.h>

using namespace std;


// MENGAWALI PROGRAM
main ()
{

// MENDEKLARASIKAN KONSTANTA DAN/ATAU VARIABEL


char str[20];
float bilangan1,bilangan2,bilangan3,bilangan4,bilangan5,jumlah,rerata;

// MEMASANG NILAI KONSTANTA DAN/ATAU INISIALISASI


VARIABEL
jumlah=0.0;
rerata=0.0;

// MEMBUKA 'INPUT FILE'


ifstream file_in;
file_in.open("03_input.txt");

// JIKA 'INPUT FILE' TIDAK DAPAT DIBUKA,BERITAHU 'ERROR',STOP


PROGRAM
if(!file_in)
{
cout<<"'INPUT FILE' TIDAK BISA DIBUKA,ERROR,PROGRAM
DIHENTIKAN";
exit(-1);
}
else

15
// MEMBACA DATA PADA 'FILE INPUT'
{
file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
bilangan1=atof(str);

file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
bilangan2=atof(str);

file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
bilangan3=atof(str);

file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
bilangan4=atof(str);

file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
bilangan5=atof(str);

// MEMPROSES DATA
jumlah=bilangan1+bilangan2+bilangan3+bilangan4+bilangan5;
rerata=jumlah/5;

// MEMBUKA 'OUTPUT FILE'


ofstream file_out;
file_out.open("03_output.txt");

// JIKA 'OUTPUT FILE' TIDAK DAPAT DIBUKA,BERITAHU


'ERROR',STOP PROGRAM
if(!file_out)
{
cout<<"'OUTPUT FILE' TIDAK BISA
DIBUKA,ERROR,PROGRAM DIHENTIKAN'";
exit(-1);

else

16
// MENULIS HASIL PADA 'OUTPUT FILE'
{
file_out<<"Program selesai dieksekusi"<<endl;
file_out<<"Hasil Eksekusi Program adalah sebagai berikut:"<<endl;
file_out<<"_________________________________"<<endl;
file_out<<endl;

file_out<<"Bilangan 1 ="<<bilangan1<<endl;
file_out<<"Bilangan 2 ="<<bilangan2<<endl;
file_out<<"Bilangan 3 ="<<bilangan3<<endl;
file_out<<"Bilangan 4 ="<<bilangan4<<endl;
file_out<<"Bilangan 5 ="<<bilangan5<<endl;
file_out<<"jumlah ="<<jumlah<<endl;
file_out<<"rata-rata ="<<rerata<<endl;
}

// MENUTUP 'INPUT FILE' DAN 'OUTPUT FILE'


file_in.close();
file_out.close();

// MENGAKHIRI PROGRAM
cout<<"Program selesai dieksekusi";
cout<<endl;
cout<<"Silahkan hasilnya dilihat pada 'OUTPUT FILE'";
cout<<endl;

b. Hasil Program
Gambar Input

17
Gambar Hasil Program

18
PROJECT 04
MENGHITUNG NILAI RERATA MENGGUNAKAN LOOPING
BAB IV
MENGHITUNG NILAI RERATA MENGGUNAKAN LOOPING

4.1 Analisis Masalah Dan Pencarian Solusi


a. Masalah
Membuat Program Untuk Menghitung Nilai Rerata Menggunakan Looping
b. Solusi
Jumlah=Bilangan1+Bilangan2+…..+Bilangan5
Rerata = Jumlah/5
4.2 Algoritma
a. Input
Baca Bilangan 1,Bilangan 2,…..,Bilangan 5
b. Proses
Jumlah = Bilangan 1+Bilangan 2+…..+Bilangan 5
Rerata = Jumlah/5
c. Output
Tampil Bilangan 1,Bilangan 2,…..,Bilangan 5
Tampil Jumlah
Tampil Rerata

19
4.3 Flowchart

20
4.4 Testing Program Dan Hasil Program
a. Souce Code
// PROJECT :04
// PROGRAM :MENGHITUNG NILAI RERATA MENGGUNAKAN LOOPING
// AUTHOR :-FANI SUSANTI
// :-FANI SYAFIRA NURUL KILAH
// :-ELMA NOVITA DEWI
// NPM :-0651 15 102
// :-0651 15 125
// :-0651 15 074
// TANGGAL : 17 OKTOBER 2015

// MEMASANG HEADER / LIBRARY


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

using namespace std;


// MENGAWALI PROGRAM
main ()
{

// MENDEKLARASIKAN KONSTANTA DAN/ATAU VARIABEL


char str[20];
int i, m, j, n, k, p;
float bilangan [5],jumlah,rerata;

// MEMASANG NILAI KONSTANTA DAN/ATAU INISIALISASI VARIABEL


i=1;
m=5;
j=1;
n=5;
k=1;
p=5;
21
jumlah=0.0;
rerata=0.0;

// MEMBUKA 'INPUT FILE'


ifstream file_in;
file_in.open("04_input.txt");

// JIKA 'INPUT FILE' TIDAK DAPAT DIBUKA, BERITAHU'ERROR',STOP


PROGRAM
if(!file_in)
{
cout<<"'INPUT FILE' TIDAK BISA DIBUKA, ERROR,
PROGRAM DIHENTIKAN";
exit(-1);
}
else

// MEMBACA DATA PADA 'FILE INPUT'


{
while(i<=m)
{
file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
bilangan[i]=atof(str);
i=i+1;
}
}

// MEMPROSES DATA
while (j<=n)
{
jumlah=jumlah+bilangan[j];
j=j+1;
}

rerata=jumlah/m;
22
// MEMBUKA 'OUTPUT FILE'
ofstream file_out;
file_out.open("04_output.txt");

// JIKA 'OUTPUT FILE' TIDAK DAPAT DIBUKA, BERITAHU 'ERROR',STOP


PROGRAM
if(!file_out)
{
cout<<"'OUTPUT FILE' TIDAK BISA DIBUKA, ERROR,PROGRAM
DIHENTIKAN";
exit(-1);
}
else

// MENULIS HASIL PADA 'OUTPUT FILE'


{
file_out<<"Program selesai dieksekusi"<<endl;
file_out<<"Hasil Eksekusi Program adalah sebagai berikut:"<<endl;
file_out<<"_____________________________________"<<endl;
file_out<<endl;

while(k<=p)
{
file_out<<"Bilangan-"<<k<<"="<<bilangan[k]<<endl;
k=k+1;
}
file_out<<endl;

file_out<<"Jumlah ="<<jumlah<<endl;
file_out<<"Rerata ="<<rerata<<endl;
file_out<<endl;
}

// MENUTUP 'INPUT FILE' DAN 'OUTPUT FILE'


file_in.close();
file_out.close();
23
// MENGAKHIRI PROGRAM
cout<<"Program selesai dieksekusi";
cout<<endl;
cout<<"Silahkan hasilnya dilihat pada 'OUTPUT FILE'";
cout<<endl;
}

b. Hasil Program
Gambar Input

24
Gambar Hasil Program

25
PROJECT 05
MEMBUAT PROGRAM RERATA DAN BEDA
MENGGUNAKAN LOOPING
BAB V
MEMBUAT PROGRAM RERATA DAN BEDA
MENGGUNAKAN LOOPING

5.1 Analisia Masalah Dan Pencarian Solusi


a. Masalah
Membuat Program Rerata Dan Beda Menggunakan Looping
b. Solusi
Jumlah=Bilangan 1+Bilangan 2+…..+Bilangan 100
Rerata=Jumlah/100
Beda 1=Rerata-Bilangan 1,….,Beda 100=Rerata – Bilangan 100

5.2 Algoritma
a. Input

Baca Bilangan 1,Bilangan 2,…..,Bilangan 100


b. Proses
Jumlah=Bilangan 1+Bilangan 2+…..+Bilangan 100
Rerata=Jumlah/100
Beda 1=Rerata-Bilangan 1,….,Beda 100=Rerata – Bilangan 100
c. Output

Tampil Bilangan1,Bilangan 2,…..,Bilangan 100


Tampil Beda1,Beda2,….,Beda100
Tampil Jumlah
Tampil Rerata

26
5.3 Flowchart

27
5.4 Testing Program Dan Hasil
a. Source Code
//project :05
//program : membuat program rerata dan beda menggunakan looping
//author : - Fani Susanti
// - Fany Syarifa Nurul kilah
// - Elma Novita Dewi
//npm : - 0651 15 102
// - 0651 15 125
// - 0651 15 074
//tanggal : 24 oktober 2015

//memasang header dan/atau library


#include<iostream>
#include<fstream>
#include<stdio.h>
#include<stdlib.h>
#include<complex.h>

using namespace std;

//mengawali program
main()
{
//mendeklarasikan variabel dan/atau konstanta
char str[20];
int i,m,j,n,k,p,r,s,t,u,y,z;
float bilangan[100],beda[100],jumlah,rerata;

// mengisi variabel dan/atau inisialisai konstanta


i=1;
m=100;
j=1;
n=100;

28
k=1;
p=100;
r=1;
s=100;
t=1;
u=100;
y=1;
z=100;
jumlah=0.0;
rerata=0.0;

// membuka input file


ifstream file_in;
file_in.open("05_input.txt");

// jika input file tidak bisa dibuka,error, program dihentikan


if(!file_in)
{
cout<<"Input file tidak bisa dibuka,ERROR, program dihentikan";
exit(-1);
}

else

// menginput data
{
while(i<=m)
{
file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
bilangan[i]=atof(str);
i=i+1;
}

29
while(r<=s)
{
file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
beda[r]=atof(str);
r=r+1;
}

//memproses data
while(j<=n)
{
jumlah=jumlah+bilangan[j];
j=j+1;
}

rerata=jumlah/m;

while(y<=z)
{
beda[y]=abs(rerata-bilangan[y]);
y=y+1;
}

//membuka output file


ofstream file_out;
file_out.open("05_output.txt");

//jika output file tidak bisa dibuka, error, program dihentikan


if(!file_out)
{

30
cout<<"output file tidak bisa dibuka,error,program dihentikan";
exit(-1);
}
else

// menampilkan output file


{
file_out<<"Program selesai dieksekusi"<<endl;
file_out<<"hasil eksekusi sebagai berikut:"<<endl;
file_out<<"-----------------------------"<<endl;
file_out<<endl;

while(k<=p)
{
file_out<<"bilangan -"<<k<<"="<<bilangan[k]<<endl;
k=k+1;
}

while(t<=u)
{
file_out<<"beda -"<<t<<"="<<beda[t]<<endl;
t=t+1;
}

file_out<<"Jumlah ="<<jumlah<<endl;
file_out<<"Rerata ="<<rerata<<endl;
file_out<<endl;
}

// menutup input file dan output file


file_in.close();
file_out.close();

31
//mengakhiri program
cout<<"Program selesai dieksekusi";
cout<<endl;
cout<<"Silahkan lihat hasilnya pada output file";
cout<<endl;
}
b. Hasil Program
Gambar Input

32
Gambar Hasil Program

33
PROJECT 06
MENCARI NILAI TERBESAR DAN NILAI TERKECIL
BAB VI
MENCARI NILAI TERBESAR DAN NILAI TERKECIL

5.1 Analisis Masalah Dan Pencarian Solusi


a. Masalah
Membuat Program Untuk Mencari Nilai Terbesar Dan Nilai Terkecil
b. Solusi
Membuat Program Mencari Nilai Terbesar Dan Nilai Terkecil Dengan
Menggunakan Array,Looping Dan Percabangan

5.2 Algoritma
a. Input
Baca Bilangan 1,Bilangan 2,……,Bilangan 100
b. Proses
Nilai Terbesar
Nilai Terkecil
c. Output
Tampil Bilangan 1, Bilangan 2,…..,Bilangan 100
Tampil Nilai Terbesar
Tampil Nilai Terkecil

34
5.3 Flowchart

35
5.4 Testing Program Dan Hasil Program
a. Source Code
//project :06
//program : memcari nilai terkecil dan nilai terbesar
//author : -Fani Susanti
// -Fany Syafira Nurul Kilah
// -Elma Novita Dewi
//NPM : -0651 15 102
// -0651 15 125
// -0651 15 074
//tanggal : 31 Oktober 2015

//memasang header dan/atau library


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

using namespace std;

//mengawali program
main()
{
//mendeklarasikan variabel dan/atau konstanta
char str[20];
int i,m,j,n,k,p;
float bilangan[100],max,min;

//mengisi variabel dan/atau inisialisasi konstanta


i=1;
m=100;
j=1;
n=100;
k=1;
p=100;

36
max=0.0;
min=0.0;

//membuka input file


ifstream file_in;
file_in.open("06_input.txt");

//jika input file tidak bisa dibuka,error,program dihentikan


if(!file_in)
{
cout<<"Input File tidak bisa dibuka,Error,program dihentikan";
exit(-1);
}
else

//menginput data
{
while(i<=m)
{
file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
bilangan[i]=atof(str);
i=i+1;
}
}

//memproses data
while(j<=n){
if(bilangan[j]<min){
min=bilangan[j];
} else if(bilangan[j]>max){
max=bilangan[j];
}
j=j+1;
}

37
//membuka output file
ofstream file_out;
file_out.open("06_output.txt");

//jika output file tidak bisa dibuka,errror,program dihentikan


if(!file_out)
{
cout<<"output file tidak bisa dibuka,error,program dihentikan";
exit(-1);
}
else

//menampilkan output file


{
file_out<<"Program selesai dieksekusi"<<endl;
file_out<<"Hasil eksekusi sebagai berikut : "<<endl;
file_out<<"----------------------------"<<endl;
file_out<<endl;

while(k<=p)
{
file_out<<"Bilangan -"<<k<<"="<<bilangan[k]<<endl;
k=k+1;
}

file_out<<"Nilai Terbesar ="<<max<<endl;


file_out<<"Nilai Terkecil ="<<min<<endl;
file_out<<endl;
}

//menutup input file dan output file


file_in.close();
file_out.close();

38
//mengakhiri program
cout<<"Program selesai dielsekusi";
cout<<endl;
cout<<"Silahkan lihat hasilnya pada 'Output File'";
cout<<endl;

b. Hasil Program
Input

39
Hasil Program

40
BAB VII
MATERI TENTANG POINTER

7.1 POINTER

Pointer adalah variable yang berisi alamat memori variable lain dan sevara tidak langsung
menunjuk ke variable tersebut.

Analoginya – sebagai contoh – Andi berteman dengan Budi, lalu anda ingin mengetahui
jumlah keluarga Budi untuk keperluan sensus penduduk. Anda tidak mengetahui alamat Budi,
tetapi anda mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda
pergi kerumah Andi, misalnya dirumah no 8321. Sesampai di Andi, Andi membaritahukan
kepada anda bahwa alamat Budi ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu
mencatat jumlah keluarga yang dimiliki Budi yaitu lima orang ( misalkan ).

Dalam contoh diatas, Andi bertindak sebagai pointer. Andi tidak memberitahukan jumlah
keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821 ( alamat Budi ) itulah anda
mengetahui jumlah keluarga Budi.

Jika alamat dari ditunjukkan dengan simbol & dan isi dari ditunjukkan dengan symbol *,
maka hubungan analogi diatas adalah:

Nama Alamat Isi

Andi 8321 9821 = &Budi


Budi 9821 5 = *(&Budi)

Dalam bentuk pointer, ditulis :

Andi = &Budi; // baris 1

Budi = *(&Budi); // baris 2

Subtitusi pernyataan di baris 2 :

Andi = *Andi;

41
Contoh program yang menggambarkan hal tersebut :

#include <iostream.h>

void main()

{
int *Andi; // Andi sebagai pointer

int Budi = 5; // Budi bukan pointer, prhatikan perbedaan pada *

Andi = &Budi // Isi dari Andi yaitu alamat Budi

cout<<”Isi alamat memori Andi : “<<Andi<<endl;

cout<<”Isi alamat memori Budi : “<<Budi<<endl;

cout<<”Isi alamat memori Budi : “<<*Andi<<endl;

cout<<”Alamat memori Andi : “<<&Andi<<endl;

cout<<”Alamat memori Budi :”<<&Budi<<endl;

Keluarannya :

Isi alamat memori Andi : 0x6da72448

Isi alamat memori Budi : 5

Isi alamat memori Budi : 5

Alamat memori Andi : 0x6da7244a

Alamat memori Budi : 0x6da72448

Penjelasan :

Isi alamat memori Andi adalah alamat memori Budi, yaitu 0x6da72448 ( alamat ini berbeda-
beda tergantung dari komputernya dan ditulis dalam bentuk hexadesimal). Sedangkan isi alamat
memori Budi adalah 5. Cara mengakses isi dari alamat Budi ada dua cara, yaitu mengakses
variabel Budi dan mengakses isi dari pointer Andi (*Andi). *Andi dapat juga disebut “isi dari
alamat memori yang ditunjuk oleh Andi”. Karena alamat memori yang ditunjuk oleh Andi
adalah alamat memori Budi, maka dapat dikatakan “isi dari alamat memori Budi”.
42

7.2 Macam-macam Pointer

1. Pointer - Array

Dalam 6.1 kita telah membahas array, sekarang kita akan melihat bagaimana data disimpan
di memori dalam sebuah array.

Contoh :

#include <iostream.h>

void main()

int n;

int array[4] = {10,20,30,40};

for(n=0;n<4;n++)

cout<<”Array[“<<n<<”] = “<<array[n]<<endl;

cout<<”\tMenggunakan pointer = “<<*&array[n]<<endl;

cout<<”\tDisimpan dalam “<<&array[n]<<endl;

Keluarannya :

Array[0] = 10

Menggunakan pointer = 10

Disimpan dalam 0xdb72408

Array[1] = 20

Menggunakan pointer = 20

43
Disimpan dalam 0xdb7240a

Array[2] = 30

Menggunakan pointer = 30

Disimpan dalam 0xdb7240c

Array[3] = 40

Menggunakan pointer = 40

Disimpan dalam 0xdb7240e

Penjelasan :

Seperti yang anda lihat, setiap array disimpan dalam 2 byte memori karena kita menggunakan
tipe data integer. Perhatikan pula penggunaan pointer dalam pengaksesan nilai setiap elemen
array dan pengaksesan alamat setiap array.

 Alamat setiap elemen array dapat diperoleh dengan cara


&array[n] atau array+n

 Isi dari setiap elemen array dapat diperoleh dengan cara


array[n] atau *(array+n)

Dibawah ini adalah contoh pengaksesan memori dan isi memori dengan menggunakan cara
kedua

Contoh :

#include <iostream.h>

void main()

int n;

int array[4] = {10,20,30,40};

for(n=0;n<4;n++)

44
cout<<”Array[“<<n<<”] = “<<array[n]<<endl;

cout<<”\tMenggunakan pointer = “<<*(array+n)<<endl;

cout<<”\tDisimpan dalam “<<array+n<<endl;

Keluarannya :

Array[0] = 10

Menggunakan pointer = 10

Disimpan dalam 0xdb72408

Array[1] = 20

Menggunakan pointer = 20

Disimpan dalam 0xdb7240a

Array[2] = 30

Menggunakan pointer = 30

Disimpan dalam 0xdb7240c

Array[3] = 40

Menggunakan pointer = 40

Disimpan dalam 0xdb7240e

Mengapa hasil antara dua contoh diatas sama namun sintaksnya berbeda ? Karena array itu
sebenarnya telah menunjuk ke alamat memori setiap elemennya, sehingga untuk mengetahui
alamat memori setiap elemen array cukup dengan array + n dengan n bilangan bulat ( integer ).

2. Pointer - String

String merupakan bentuk khusus dari array. Oleh karena itu operasi pointer-array tidak
jauh berbeda dengan operasi pointer-string
Contoh :

45
#include <iostream.h>

void main()

{
char nama[5] = “Andi”;

cout<<”Nama awal : “<<nama<<endl;

char *ptr;

ptr = nama;

*(ptr+3) = „y‟;

cout<<”Nama menjadi : “<<nama<<endl;

Keluarannya :

Nama awal : Andi

Nama menjadi : Andy

Jadi :

 String adalah array (susunan) dari karakter-karakter


 String dapat diakses dan dimanipulasi lewat pointer
 Alamat awal dari string dapat diperoleh dari namanya

3. Pointer Sebagai Argumen String

Jika pointer dikirim sebagai argument, maka nilai aktualnya dapat dimodifikasi.

Contoh :

#include <iostream.h>

void ubah(char *);

void main()

46
char *ptr,nama[5] = “Andi”;

ptr = nama; // ptr sebagai pointer ke variable nama

cout<<”Nama awal : “<<nama<<endl;

ubah(ptr);

cout<<”Nama menjadi : “<<nama<<endl;

void ubah(char *x)

*(x+3) = „y‟;

Keluarannya :

Nama awal : Andi

Nama menjadi : Andy

4 Alias

Alias adalah nama lain dari suatu variable. Jika suatu perubaha terjadi pada variable alias
maka akan berpengaruh kepada variable asli dan begitu juga sebaliknya.

Contoh :

#include <iostream.h>

void main()

{
int uang =10000;

int &duit = uang;

cout<<”Nilai uang Rp.“<<uang<<endl;

47
cout<<”Nilai duit Rp.“<<duit<<endl;

uang = 9000;

cout<<”Uang dibelikan es krim Rp.1000, nilainya menjadi Rp.“<<uang<<endl;


cout<<”Nilai duit juga berubah menjadi Rp.“<<duit<<endl;

Keluarannya :

Nilai uang Rp.10000

Nilai duit Rp.10000

Uang dibelikan es krim Rp.1000, nilainya menjadi Rp.9000

Nilai duit juga berubah menjadi Rp.9000

Penjelasan :

Perubahan pada uang menyebabkan perubahan pada duit karena duit memiliki alamat memori
yang sama dengan uang. Jadi jika isi dari alamat memori uang atau duit berubah, maka nilai
variable duit atau uang juga akan ikut berubah.

5. Argumen Baris Perintah

Seringkali kita menggunakan perintah edit file.txt pada DOS, atau perintah vi file.txt pada
Unix. Yang dimaksud dengan argumen baris perintah yaitu file.txt. Hal seperti itu dapat dibuat
dengan menggunakan C++ dengan menyertakan argumen berikut pada fungsi main()

void main(int argc, char *argv[])

atau

48
main(int argc, char *argv[])

return 0;

Keterangan :

 Argc : Beisi jumlah parameter baris ditambah 1


 Argv : Berisi daftar nama argumen dan program, dengan rincian sebagai berikut :
 argv[0] menunjuk nama program, lengkap dengan alamat path
 argv[1] menunjuk argumen pertama ( kalau ada )
 argv[n[ menunjuk argumen ke-n ( kalau ada)
Contoh :

// beri nama tes.cpp

#include<iostream.h>

void main(int argc, char *argv[])

for(int a=0;a<argc;a++)cout<<”argv[“<<a<<”] = “<<argv[a]<<endl;

Penjelasan :

Setelah dicompile dan di link akan muncul file tes.exe, misalkan anda simpan di d:\tes.exe

Buka command prompt, pindah ke direktori d:\ ketikkan

Tes argumen1 argument2 argument3, maka akan muncul tampilan

argv[0] = D:\TES.EXE

argv[1] = argument1

49
argv[2] = argument2

argv[3] = argument3

Dibawah ini diberikan contoh penggunaan argumen baris perintah yang lain, supaya anda
lebih memahami

Contoh :

// Program mengubah nilai desimal ke biner

// Simpan dengan nama dec2bin.cpp

#include <iostream.h>

#include <conio.h>

#include <math.h>

#include <stdlib.h>

void main(int argc, char *argv[])

if(argc !=2)

cerr<<"Pemakaian : dec2bin angka";

exit(1);

int p = atoi(argv[1]),n,i=0;

double A[100];

do

50
A[++i]=p%2;

p=p/2;

floor(p);

} while (p>1);

cout<<"Nilai binernya : ";

cout<<p;

for(n=i;n>=1;n--)

cout<<A[n];

getch();

Jika anda ketikkan dec2bin 4, maka outputnya Nilai binernya : 100

7.3 FUNGSI

Fungsi adalah sekumpullan perintah operasi program yang dapat menerima argumen input
dan dapat memberikan hasil output yang dapat berupa nilai ataupun sebuah hasil operasi.

Nama fungis yang didefinisikan sendiri oleh pemrogram tidak boleh sama dengan nama
build-in function pada compiler C++.

Fungsi digunakan agar pemrogram dapat menghindari penulisan bagian program ( kode )
berulang-ulang, dapat menyusun kode program agar terlihat lebih rapi dan kemudahan dalam
debugging program.

1.FUNGSI, DEKLARASI DAN DEFINISI NYA

Pemrogram dapat membuat fungsi yang didefinisikan sendiri olehnya.

51
Contoh :

// Fungsi kuadrat

// tipe_return nama_fungsi (tipe_argument argumen)

float kuadrat ( float x )

return x*x;

Fungsi yang didefinisikan oleh pemrogram terdiri atas dua bagian, yaitu judul ( header ) dan
isi ( body ). Judul dari sebuah fungsi terdiri dari tipe return ( float ), nama fungsi ( kuadrat ) dan
list parameter ( float x ).

Jadi, judul untuk fungsi kuadrat adalah

float kuadrat ( float x )

Isi dari sebuah fungsi adalah blok kode yang mengikuti judulnya. Berisi kode yang
menjalankan aksi dari fungsi, termasuk pernyataan return yang memuat nilai fungsi yang akan
dikembalikan ke yang memanggilnya, Isi dari fungsi kuadrat() adalah

return x*x;

Biasanya isi dari fungsi cukup besar. Meskipun demikian, judulnya tetap hanya berada dalam
satu baris. Isi dari sebuah fungsi dapat memanggil fungsi itu sendiri ( disebut rekursif ) atau
memanggil fungsi lainnya.

Pernyataan return dari sebuah fungsi mempunyai dua manfaat, yaitu akan mengakhiri fungsi
dan mengembalikan nilainya ke program pemanggil. Bentuk umum pernyataan return adalah :

return ekspresi;

52
Dengan ekspresi adalah sebuah ekspresi yang nilainya dinyatakan untuk sebuah variable
yang tipenya sama seperti tipe return. Terdapat juga fungsi yang tidak memberikan nilai return
atau tipe returnnya void.

Contoh :

#include <iostream.h>

void sayHello(char[]) ; // deklarasi fungsi sayHello()

void main()

char n[50];

cout<<"Masukkan nama anda : "; cin>>n;

sayHello(n);

void sayHello(char nama[]) // definisi funsi sayHello()

cout<<"Selamat datang "<<nama;

Pengertian deklarasi fungsi berbeda dengan dengan definisi fungsi. Suatu deklarasi fungsi
adalah judul fungsi yang sederhana yang diikuti oleh tanda semicolon ( ; ). Sedangkan definisi
fungsi adalah fungsi yang lengkap, terdiri dari judul dan isinya. Suatu deklarasi fungsi disebut
juga sebagai prototype fungsi.

Suatu deklarasi fungsi seperti layaknya suatu deklarasi variabel, yang memberitahu compiler
semua informasi yang dibutuhkan untuk mengkompilasi file. Compiler tidak perlu mengetahui
bagaimana fungsi bekerja, yang perlu diketahui adalah nama fungsi, jumlah dan tipe
parameternya, dan tipe balikannya ( return ). Hal ini merupakan informasi yang dimuat secara
lengkap dalam judul fungsi.

53
Juga seperti sebuah deklarasi variabel, suatu deklarasi fungsi harus muncul diatas semua
nama fungsi yang digunakannya. Berbeda dengan definisi fungsi, yang dapat diletakkan terpisah
dari deklarasinya, dan dapat muncul dimana saja diluar fungsi main() dan biasanya dituliskan
setelah fungsi main() atau dalam file terpisah yang jika ingin digunakan tinggal menambahkan
prepocessor #include “nama_file” pada file utama.

Jika definisi fungsi diletakkan diatas fungsi main() maka deklarsi fungsi tidak diperlukan.

Variabel-variabel yang di list di dalam parameter fungsi disebut parameter-parameter formal


atau argumen-argumen formal. Variabel lokal seperti ini hanya ada selama eksekusi fungsi yang
bersangkutan. Dalam contoh dibawah, parameter-parameter formalnya adalah x dan y.

Variabel yang dilist dalam pemanggilan fungsi disebut parameter-parameter actual atau
argumen-argumen aktual. Sama seperti variabel lainnya dalam program utama, variabel-variabel
tersebut harus dideklarasikan sebelum digunakan dalam pemanggilan. Dalam contoh dibawah,
parameter-parameter aktualnya adalah m dan n.

Contoh :

// Penggunaan Fungsi Rekursif :

// Program mengecek sebuah bilangan integer atau bukan

#include <iostream.h>

#include <conio.h>

#include <math.h>

void cekInt(double);

void main()

double angka;

cout<<"Masukan sebuah angka :";cin>>angka;

cekInt(angka);

54
void cekInt(double n)

if(n>1)cekInt(n-1);

else if(n<1)cekInt(-n-1);

else

if(n>0&&n<1)cout<<n<<"\t Bukan bilangan bulat\n";

else cout<<n<<"\t Bilangan bulat\n";

Keluaran :

Masukkan sebuah angka : 57

Bilangan bulat

Masukkan sebuah angka : 0.57

Bukan bilangan bulat

Masukkan sebuah angka : -24

Bilangan bulat

2. NILAI BAWAAN UNTUK ARGUMEN FUNGSI

Salah satu keistimewaan C++ yang sangat bermanfaat dalam pemrograman adalah adanya
kemampuan untuk menyetel nilai default

Argumen fungsi. Argumen-argumen yang mempunyai nilai bawaan nantinya dapat tidak
disertakan di dalam pemanggilan fungsi dan dengan sendirinya C++ akan menggunakan nilai
bawaan dari argumen yang tidak disertakan.

55
Contoh :

#include <iostream.h>

#include <conio.h>

void sayHello(int);

void main()

sayHello();

void sayHello(int n=1)

for(int m=0;m<n;m++) cout<<”Halloo …\n”;

Penjelasan :

Jika pada program, argumen sayHello tidak diberikan, maka program akan menampilkan

Halloo …

Sebanyak satu kali, namun jika argumen pada fungsi sayHello diberikan, misalkan sayHello(4),
maka program akan menampilkan

Halloo …

Halloo …

Halloo …

Halloo …

56
Itulah yang disebut dengan nilai default pada fungsi

3. MELEWATKAN ARGUMEN DENGAN REFERENSI

Lihat bab mengenai array dan pointer.

4. FUNGSI-FUNGSI BAWAAN C++

Anda dapat menggunakan fungsi-fungsi bawaan C++, misalkan fungsi-fungsi matematika,


pengolah kata dan banyak lagi. Sebenarnya ( mungkin tidak terasa bagi anda ) main juga adalah
fungsi, jadi tanpa anda sadari sebenarnya anda telah menggunakan fungsi.

Untuk dapat menggunakan fungsi-fungsi tersebut anda harus meng-include file dimana fungsi
tersebut didefinisikan

Misalkan :

 Fungsi – fungsi matematika, anda harus meng-include file math.h


 Fungsi – fungsi pengolah string dan karakter, anda harus meng-include file string.h
 Fungsi clrscr(), getch(), getche() dalam file conio.h

57
PROJECT 08
MEMBUAT PROGRAM DENGAN MENGGUNAKAN SUB PROGRAM
(FUNGSI) UNTUK MENGHITUNG JUMLAH DENGAN
MENGGUNAKAN FUNGSI INPUT,FUNGSI
JUMLAH DAN FUNGSI OUTPUT
BAB VIII
MEMBUAT PROGRAM DENGAN MENGGUNAKAN
SUB PROGRAM (FUNGSI) UNTUK MENGHITUNG
JUMLAH DENGAN MENGGUNAKAN FUNGSI
INPUT,FUNGSI JUMLAH DAN FUNGSI OUTPUT

8.1 Analisi Masalah Dan Pencarian Solusi


a. Masalah
Membuat Program Dengan Menggunakan Sub Program (Fungsi) Untuk
Menghitung Jumlah dengan Menggunakan Fungsi Input, Fungsi jumlah dan
Fungsi Output
b. Solusi
Jumlah=Bilangan[1]+Bilangan[2]+…..+Bilangan[10]
8.2 Algoritma
a. Input
Baca Bilangan[1], Bilangan[2], ….., Bilangan[10]
b. Proses
Jumlah=Bilangan[1]+Bilangan[2]+…..+Bilangan[10]
c. Output
Tampil Bilangan[1],Bilangan[2],…..,Bilangan[10]
Tampil Jumlah

58
8.3 Flowchart

59
8.4 Testing Program Dan Hasil
a. Souce Code
//PROJECT : 08
//PROGRAM : MEMBUAT PROGRAM DENGAN MENGGUAAKAN
SUB PROGRAM UNTUK MENGHTUNG JUMLAH
//AUTHOR : - FANI SUSANTI
// - ELMA NOVITA DEWI
// - FANY SYAFIRA NURUL KILAH
//NPM : - 0651 15 102
// - 0651 15 074
// - 0651 15 125
//TANGGAL : 09 JANUARI 2016

//MEMASANG HEADER DAN/ATAU LIBRARY


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

using namespace std;

//MENDEKLARASIKAN VARIABEL DAN FUNGSI


int fxinput(int i,int m);
float fxjumlah(float *sum);
int fxoutput(int k,int p);
char str[20];
int i,m,n,j,k,p;
float bilangan[10],jumlah,hasil;

//MENGAWALI PROGRAM DAN/ATAU FUNGSI UTAMA


main()
{
60
i=1;
m=10;
n=1;
j=10;
k=1;
p=10;
hasil=0.0;
jumlah=0.0;

fxinput(i,m);
fxoutput(k,p);
//MENGAKHIR PROGRAM
cout<<"Program selesai dieksekusi"<<endl;
cout<<"Silahkan lihat hasilnya pada 'OUTPUT FILE'"<<endl;
}

//FUNGSI
int fxinput(int i,int m)
{
//MEMBUKA INPUT FILE
ifstream file_in;
file_in.open("08_input.txt");

//JIKA INPUT FILE TIDAK BISA DIBUKA,ERROR,PROGAM


DIHENTIKAN
if(!file_in)
{
cout<<"'Input File' tiidak bisa dibuka,ERROR,program
dihentikan";
exit(-1);

61
}
else

//MEMBACA DATA PADA INPUT FILE


{
while(i<=m)
{
file_in.getline(str,20,'\n');
file_in.getline(str,20,'\n');
bilangan[i]=atof(str);
i=i+1;
}
}
return (i);
}

float fxjumlah(float *sum)


{
//MEMPROSES DATA
while(n<=j)
{
*sum = *sum+bilangan[n];
n=n+1;
}
return *sum;
}

int fxoutput(int k,int p)


{

62
//MEMBUKA OUTPUT FILE
ofstream file_out;
file_out.open("08_output.txt");

//JIKA OUTPUT FILE TIDAK BISA DIBUKA,ERROR,PROGRAM


DIHENTIKAN
if(!file_out)
{
cout<<"'Output File' tidak bisa dibukia,ERROR,program
dihentikan";
exit(-1);
}
else

//MENAMPILKAN OUTPUT FILE


{
file_out<<"Program selesai dieksekusi"<<endl;
file_out<<"Silahkan lihat hasilnya sebagai berikut:"<<endl;
file_out<<"----------------------------------------"<<endl;
file_out<<endl;

while(k<=p)
{
file_out<<"Bilangan -"<<k<<"="<<bilangan[k]<<endl;
k=k+1;
}

file_out<<"Jumlah ="<<fxjumlah(&hasil);
file_out<<endl;
}

63
return (k);
}
b. Hasil Program
Input

64
Hasil Program

65

Anda mungkin juga menyukai