Anda di halaman 1dari 19

LAPORAN HASIL PRAKTIKUM 11

ALGORITMA DAN PEMROGRAMAN FP


“Pengenalan Subprogram/Metode”

Dosen Pengampu :
Rosalia Arum Kumalasanti M.T.

Oleh
Nama : Ismiyati Nurul Aulia
NIM : 235314173

PROGRAM STUDI INFORMATIKA


FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2023
A. TUJUAN
1. Mahasiswa menguasai konsep pembuaan program secara moduler memakai metode.
2. Mahasiswa mampu menyelesaikan masalah konkrit sederhana memakai pendekatan
moduler dengan cara membuat metode.

B. DASAR TEORI
1. Input dan output sederhana
2. Operator Aritmatika
3. Operator Penugasan
4. Operator Relasional
5. Operator Logika

C. ANALISIS
Soal No 1.
a. Uraian soal
Modifikasilah program latihan nomor 2 di atas sehingga program Anda dapat
menghitung besarnya C(n,r) = n ! / [ (n – r) ! r ! ] di mana besarnya n dan r
dimasukkan lewat keyboard serta memakai syarat bahwa r ≤ n.

b. Rancangan program
Input
 Meminta pengguna memasukan nilai n dan membacanya
Meminta pengguna memasukan nilai r dan membacanya

Proses
 Memeriksa kondisi apakah r lebih besar dari n. Jika ya, cetak pesan kesalahan dan
berhenti.
Menghitung faktorial dari n menggunakan fungsi faktorial.
Menghitung faktorial dari r menggunakan fungsi faktorial.
Menghitung nilai dari kombinasi C(n,r) menggunakan rumus : hasilCNR = nilaiN /
(nilaiNR * nilaiR);

Output
 Mencetak nilai faktorial dari n.
Mencetak nilai faktorial dari r.
Mencetak nilai kombinasi C(n,r).

c. Kode program
package modul11_alpro;

import java.util.Scanner;

/**
*
* @author ismiyna
*/
public class modul11Tugas1 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Masukkan nilai n: "); //meminta pengguna memasukan nilai n
int n = keyboard.nextInt(); //membuat variabel n dan membacanya

System.out.print("Masukkan nilai r : "); //meminta pengguna memasukan nilai r


int r = keyboard.nextInt(); //membuat variabel r dan membacanya

if (r > n) { //memeriksa kondisi apakah nilai r lebih besar dari nilai n


System.out.println("r harus kurang dari atau sama dengan n."); //mencetak
pesan kesalahan ke layar pengguna jika nilai r lebih besar dari nilai n.
return; //berhenti
}

int nilaiN = faktorial(n); //deklarasi variable nilaiN dengan tipedata integer


dengan menghitung kombinasi dari n
int nilaiR = faktorial(r); //deklarasi variable nilaiR dengan tipedata integer
dengan menghitung kombinasi menggunakan rumus n - r
int nilaiNR = faktorial(n - r); //deklarasi variable nilaiNR dengan tipedata integer
dengan menghitung kombinasi menggunakan rumus n - r

int hasilCNR = nilaiN / (nilaiNR * nilaiR);//rumus untuk perhitungan hasil milai


CNR

System.out.println("Nilai n! (Faktorial dari n): " + nilaiN); //mencetak nilai n


System.out.println("Nilai r! (Faktorial dari r): " + nilaiR); //mencetak nilai r
System.out.println("Besarnya C (" + n + "," + r + ") adalah = " + hasilCNR);
//mencetak hasil nilai CNR

static int faktorial(int n) { //fungsi untuk menghitung faktorial


int hasilFaktorial = 1; //deklarasi variabel hasil faktorial menggunakan tipedata
integer dengan nilai 1
for (int i = 1; i <= n; i++) { //memulai loop for yang akan iterasi dari 1 hingga n.
hasilFaktorial *= i; //mengalikan nilai saat ini dari i dengan nilai saat ini dari
hasilFaktorial dan menetapkan hasilnya ke hasilFaktorial
}
return hasilFaktorial; //mengembalikan nilai akhir dari hasilFaktorial
}
}
d. Teks program memakai tabel berikut

Perintah Arti
package modul11_alpro; Deklarasi package

import java.util.Scanner; Deklarasi import scanner

public class modul11Tugas1 { Kelas dengan nama “modul11Tugas1”

public static void main(String[] args) { Metode utama dalam sebuah program

Scanner keyboard = new Membuat Scanner Keyboard


Scanner(System.in);
System.out.print("Masukkan nilai n: "); Meminta pengguna memasukan nilai n dan
int n = keyboard.nextInt(); membacanya
System.out.print("Masukkan nilai r : "); Meminta pengguna memasukan nilai r dan
int r = keyboard.nextInt(); membacanya
if (r > n) { Memeriksa kondisi apakah r lebih besar
System.out.println("r harus kurang dari dari n. Jika ya, cetak pesan kesalahan dan
atau sama dengan n."); berhenti.
return; Menghitung faktorial dari n menggunakan
} fungsi faktorial.
int nilaiN = faktorial(n); Menghitung faktorial dari r menggunakan
int nilaiR = faktorial(r); fungsi faktorial.
int nilaiNR = faktorial(n - r); Menghitung nilai dari kombinasi C(n,r)
int hasilCNR = nilaiN / (nilaiNR * nilaiR); menggunakan rumus : hasilCNR = nilaiN /
(nilaiNR * nilaiR);
System.out.println("Nilai n! (Faktorial Mencetak nilai faktorial dari n.
dari n): " + nilaiN); Mencetak nilai faktorial dari r.
System.out.println("Nilai r! (Faktorial Mencetak nilai kombinasi C(n,r).
dari r): " + nilaiR);
System.out.println("Besarnya C (" + n +
"," + r + ") adalah = " + hasilCNR);
static int faktorial(int n) { Method untuk menghitung faktorial
int hasilFaktorial = 1;
for (int i = 1; i <= n; i++) {.
hasilFaktorial *= i;
}
return hasilFaktorial; }
e. Screenshot Program
Soal No 2.
a. Uraian soal
Ini adalah soal praktikum IX no 5. Modifikasilah program Anda memakai pendekatan
moduler sedemikian rupa program Anda memakai 2 buah metode yakni metode untuk
menghitung n ! dan metode untuk menghitung C(n,r).

b. Rancangan program
Input
 Meminta pengguna memasukan nilai n untuk segitiga pascal dan membacanya.

Proses
 Di dalam printSegitigaPascal(n):
Dilakukan perulangan untuk setiap baris dari 1 hingga n.
Dalam setiap baris:
Menentukan nilai spasi untuk penataan rapih Segitiga Pascal.
Menggunakan rumus kombinasi dalam kombinasi(int n, int r) untuk
menghasilkan nilai pada setiap posisi baris dan kolom di Segitiga Pascal.
Mencetak nilai tersebut dengan spasi sebagai pemisah.

Output
 Mencetak Segitiga Pascal berdasarkan nilai n yang dimasukkan pengguna.

c. Kode Program
package modul11_alpro;

import java.util.Scanner;

/**
*
* @author ismiyna
*/
public class modul11Tugas2 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);

System.out.print("Masukkan nilai n untuk Segitiga Pascal: "); //meminta


pengguna memasukan nilai n untuk segitiga pascal
int n = keyboard.nextInt(); //membuat variabel n dan membacanya

System.out.println("Segitiga Pascal untuk n=" + n + ":"); //mencetak pesan


rumus untuk mencari ukuran segitiga pascall
printSegitigaPascal(n); //mencetak Segitiga Pascal dengan ukuran n.
}

// Method untuk menghitung nilai faktorial n


static int faktorial(int n) { //fungsi untuk menghitung faktorial n
int hasilFaktorial = 1; //deklarasi variabel hasil faktorial menggunakan tipedata
integer dengan nilai 1
for (int i = 1; i <= n; i++) { ////memulai loop for yang akan iterasi dari 1 hingga
n.
hasilFaktorial *= i; ////mengalikan nilai saat ini dari i dengan nilai saat ini
dari hasilFaktorial dan menetapkan hasilnya ke hasilFaktorial
}
return hasilFaktorial; //mengembalikan nilai akhir dari hasilFaktorial
}

// Method untuk menghitung nilai kombinasi C(n,r)


static int kombinasi(int n, int r) { ////fungsi untuk menghitung faktorial n, n - r,
dan r
return faktorial(n) / (faktorial(n - r) * faktorial(r)); //mengembalikan nilai
kombinasi C(n,r) dengan menggunakan rumus kombinasi
}

// Method untuk mencetak Segitiga Pascal


static void printSegitigaPascal(int n) { //fungsi untuk mencetak segitiga pascal
dari baris 1 hingga baris n.
for (int i = 0; i <= n; i++) { //loop pertama untuk perulangan i = 0 hingga i <= n
int value = 1; //deklarasi variabel value menggunakan tipedata ineger dengan
nilai 1

for (int k = n - i; k > 0; k--) { //loop kedua untuk perulangan k = n - i hingga


k > 0 dengan pengurangan 1.
System.out.print(" "); //mencetak spasi
}

for (int j = 0; j <= i; j++) { //loop ketiga untuk perulangan j = 0 hingga j <= i
dengan penambahan 1.
System.out.print(value + " "); // mencetak value yang diikuti spasi untuk
pemisah
value = value * (i - j) / (j + 1); // memperbaiki nilai variabel value
menggunakan rumus value = value * (i - j) / (j + 1).
}
System.out.println(); //pindah ke baris berikutnya
}
}
}
d. Teks program memakai tabel berikut

Perintah Arti
package modul11_alpro; Deklarasi package

import java.util.Scanner; Deklarasi import scanner

public class modul11Tugas2 { Kelas dengan nama “modul11Tugas2”

public static void main(String[] args) { Metode utama dalam sebuah program

Scanner keyboard = new Membuat Scanner Keyboard


Scanner(System.in);
System.out.print("Masukkan nilai n Meminta pengguna memasukan nilai n
untuk Segitiga Pascal: "); untuk segitiga pascal dan membacanya.
int n = keyboard.nextInt();
System.out.println("Segitiga Pascal untuk Mencetak pesan rumus untuk mencari
n=" + n + ":"); ukuran segitiga pascal
printSegitigaPascal(n); Di dalam printSegitigaPascal(n):
} Dilakukan perulangan untuk setiap baris
static int faktorial(int n) { dari 1 hingga n.
int hasilFaktorial = 1; Dalam setiap baris:
for (int i = 1; i <= n; i++) { Menentukan nilai spasi untuk penataan
hasilFaktorial *= i; rapih Segitiga Pascal.
} Menggunakan rumus kombinasi dalam
return hasilFaktorial; kombinasi(int n, int r) untuk menghasilkan
} nilai pada setiap posisi baris dan kolom di
static int kombinasi(int n, int r) { Segitiga Pascal.
return faktorial(n) / (faktorial(n - r) * Mencetak nilai tersebut dengan spasi
faktorial(r)); sebagai pemisah. Dan mencetak Segitiga
} Pascal berdasarkan nilai n yang
static void printSegitigaPascal(int n) { dimasukkan pengguna.
for (int i = 0; i <= n; i++) {
int value = 1;

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


System.out.print(" ");
}

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


System.out.print(value + " ");
value = value * (i - j) / (j + 1);
}
System.out.println();
}
}
}

e. Screenshot Program
Soal No 3.
a. Uraian soal
Buat program untuk menghitung luas segitiga berdasarkan koordinat 3 titik sudutnya
yang dimasukkan lewat keyboard. Program Anda harus memakai beberapa metode
berikut
a. bacaTitik() // membaca absis dan ordinat suatu titik dan tanpa nilai balikan
b. hitungJarak(int x1, int y1, int x2, int y2) // menghitung jarak antara 2 titik (x1,y1)
dan (x2,y2) dengan nilai balikan (return) jarak dua titik
c. hitungKeliling(double sisiA, double sisiB, double sisiC) //dengan nilai balikan
keliling segitiga atau jumlah sisiA, sisiB dan sisiC.
d. hitungLuas() // menghitung dan menampilkan luas segitiga memakai rumus yang
sudah pernah diajarkan

b. Rancangan program
Input
 Meminta pengguna untuk memasukkan koordinat x dan y dari titik A, B, dan C.

Proses
 Menggunakan fungsi hitungJarak(double x1, double y1, double x2, double y2)
untuk menghitung jarak antara dua titik berdasarkan koordinat yang dimasukkan
pengguna.
Menggunakan fungsi hitungKeliling(double a, double b, double c) untuk menghitung
keliling segitiga berdasarkan panjang ketiga sisinya.
Menggunakan fungsi hitungLuas() untuk menghitung luas segitiga menggunakan
rumus Heron.

Output
 Menampilkan jarak antara titik A dan B.
Menampilkan jarak antara titik B dan C.
Menampilkan jarak antara titik C dan A.
Menampilkan hasil perhitungan keliling segitiga.
Menampilkan hasil perhitungan luas segitiga.

c. Kode Program
package modul11_alpro;

import java.util.Scanner;

/**
*
* @author ismiyna
*/
public class modul11Tugas3 {

/**
* @param args the command line arguments
*/
static double keliling, a, b, c; //fungsi untuk menyimpan nilai keliling, sisi a, sisi b,
dan sisi c dari segitiga.

public static void main(String[] args) {


Scanner keyboard = new Scanner(System.in);

System.out.println("Titik A"); //meminta pengguna mencetak titik A


System.out.print("Masukkan nilai x: "); //meminta pengguna memasukan nilai x
double x1 = keyboard.nextDouble(); // membuat variabel x1 dan membacanya
System.out.print("Masukkan nilai y: "); //meminta pengguna memasukan nilai y
double y1 = keyboard.nextDouble(); //membuat variabel y1 dan membacanya

System.out.println("Titik B"); //meminta pengguna mencetak titik B


System.out.print("Masukkan nilai x: "); //meminta pengguna memasukan nilai x
double x2 = keyboard.nextDouble(); //membuat variabel x2 dan membacanya
System.out.print("Masukkan nilai y: "); //meminta pengguna memasukan nilai y
double y2 = keyboard.nextDouble(); //membuat variabel y2 dan membacanya

System.out.println("Titik C"); //meminta pengguna mencetak titik C


System.out.print("Masukkan nilai x: "); //meminta pengguna memasukan nilai x
double x3 = keyboard.nextDouble(); //membuat variabel x3 dan membacanya
System.out.print("Masukkan nilai y: "); //meminta pengguna memasukan nilai y
double y3 = keyboard.nextDouble(); //membuat variabel y3 dan membacanya
System.out.println(); //pindah ke baris berikutnya

double sisiA = hitungJarak(x1, y1, x2, y2); // membuat variabel sisiA untuk
menghitung jarak antara titik x1, y1, x2, y2
double sisiB = hitungJarak(x2, y2, x3, y3); // membuat variabel sisiB untuk
menghitung jarak antara titik x2, y2, x3, y3
double sisiC = hitungJarak(x1, y1, x3, y3);// membuat variabel sisiC untuk
menghitung jarak antara titik x1, y1, x3, y3

System.out.println("Jarak koordinat 1 dan 2 = " + sisiA); //mencetak jarak


koordinat 1 dan 2
System.out.println("Jarak koordinat 2 dan 3 = " + sisiB); //mencetak jarak
koordinat 2 dan 3
System.out.println("Jarak koordinat 3 dan 1 = " + sisiC); //mencetak jarak
koordinat 3 dan 1
System.out.println(); //pindah ke baris berikutnya
keliling = hitungKeliling(sisiA, sisiB, sisiC); //rumus menghitung seluruh
keliling sisiA, sisiB, sisiC
System.out.println("Keliling segitiga adalah " + keliling); //mencetak hasil
keliling segitiga adalah
System.out.println(); //pindah ke baris berikutnya

double luas = hitungLuas(); //membuat variabel luas dan menghitung luas


System.out.println("Luas segitiga adalah " + luas); //mencetak hasil luas segitiga

static double hitungJarak(double x1, double y1, double x2, double y2) { //frungsi
untuk menghitung jarak antara dua titik menggunakan teorema Pythagoras
double jarak1 = Math.sqrt(Math.pow((x2 - x1), 2) + Math.pow((y2 - y1), 2)); //
rumus untuk menghitung jarak antara dua titik
return jarak1; //mengembalikan nilai jarak
}

static double hitungKeliling(double a, double b, double c) { //Fungsi untuk


menghitung keliling segitiga dengan menambahkan panjang ketiga sisinya
keliling = a + b + c; // rumus untuk menghitung keliling
return keliling; //mengembalikan keliling
}

static double hitungLuas() { //Fungsi untuk menghitung luas segitiga menggunakan


rumus Heron.
double sisi = keliling / 2; //perhitungan sisi yang menggunakan rumus heron
double luas = Math.sqrt(sisi * (sisi - a) * (sisi - b) * (sisi - c)); //rumus untuk
menghitung luas
return luas; //mengembalikan luas
}

d. Teks program memakai tabel berikut

Perintah Arti
package modul11_alpro; Deklarasi package

import java.util.Scanner; Deklarasi import scanner

public class modul11Tugas3 { Kelas dengan nama “modul11Tugas3”

public static void main(String[] args) { Metode utama dalam sebuah program
Scanner keyboard = new Membuat Scanner Keyboard
Scanner(System.in);
static double keliling, a, b, c; Fungsi untuk menyimpan nilai keliling, sisi
a, sisi b, dan sisi c dari segitiga.
System.out.println("Titik A"); Menggunakan fungsi hitungJarak(double
System.out.print("Masukkan nilai x: "); x1, double y1, double x2, double y2) untuk
double x1 = keyboard.nextDouble(); menghitung jarak antara dua titik
System.out.print("Masukkan nilai y: "); berdasarkan koordinat yang dimasukkan
double y1 = keyboard.nextDouble(); pengguna.
Menggunakan fungsi hitungKeliling(double
System.out.println("Titik B"); a, double b, double c) untuk menghitung
System.out.print("Masukkan nilai x: "); keliling segitiga berdasarkan panjang ketiga
double x2 = keyboard.nextDouble(); sisinya.
System.out.print("Masukkan nilai y: "); Menggunakan fungsi hitungLuas() untuk
double y2 = keyboard.nextDouble(); menghitung luas segitiga menggunakan
rumus Heron. Dan Menampilkan jarak
System.out.println("Titik C"); antara titik A dan B.
System.out.print("Masukkan nilai x: "); Menampilkan jarak antara titik B dan C.
double x3 = keyboard.nextDouble(); Menampilkan jarak antara titik C dan A.
System.out.print("Masukkan nilai y: "); Menampilkan hasil perhitungan keliling
double y3 = keyboard.nextDouble(); segitiga.
System.out.println(); Menampilkan hasil perhitungan luas
segitiga.
double sisiA = hitungJarak(x1, y1, x2, y2);
double sisiB = hitungJarak(x2, y2, x3, y3);
double sisiC = hitungJarak(x1, y1, x3, y3);

System.out.println("Jarak koordinat 1
dan 2 = " + sisiA);
System.out.println("Jarak koordinat 2
dan 3 = " + sisiB);
System.out.println("Jarak koordinat 3
dan 1 = " + sisiC);
System.out.println();

keliling = hitungKeliling(sisiA, sisiB,


sisiC);
System.out.println("Keliling segitiga
adalah " + keliling);
System.out.println();

double luas = hitungLuas();


System.out.println("Luas segitiga adalah
" + luas);

}
static double hitungJarak(double x1, Method untuk menghitung jarak
double y1, double x2, double y2) {
double jarak1 = Math.sqrt(Math.pow((x2
- x1), 2) + Math.pow((y2 - y1), 2));
return jarak1;
static double hitungKeliling(double a, Method untuk menghitung keliling
double b, double c) {
keliling = a + b + c;
return keliling;
}
static double hitungLuas() { Method untung menghitung luas
double sisi = keliling / 2;
double luas = Math.sqrt(sisi * (sisi - a) *
(sisi - b) * (sisi - c));
return luas;
}

e. Screenshot Program
Soal No 4.
a. Uraian soal
Fungsi densitas/kepadatan normal baku yang berbentuk lonceng atau bel dapat
dirumuskan memakai fungsi berikut ini.
Di mana e adaah bilangan alam yang besarnya sama dengan 2,71828
Kalau digambar maka fungsi f(z) di atas akan seperti ini
Tugas Anda adalah membuat grafik/gambar fungsi normal di atas yang
disederhananakan menjadi
*
**
***
*****
******
*******
********
*******
******
*****
****
***
**
*

b. Rancangan Program

Input
 Deklarasi variabel n
Meminta pengguna memasukkan jumlah n dan membacanya

Proses
 Melakukan perulangan untuk nilai z dari -4 hingga 4 dengan increment 0.25.
Di setiap perulangan menghitung jumlah bintang dengan memanggil fungsi normal
(n, z).
Menggunakan nilai yang dihasilkan dari fungsi normal untuk mencetak jumlah
bintang dalam bentuk bintang dengan memanggil fungsi bintang.

Output
 Mencetak jumlah bintang dalam bentuk bintang pada setiap perulangan.

c. Kode Program
package modul11_alpro;

import java.util.Scanner;

/**
*
* @author ismiyna
*/
public class modul11Tugas4 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int n; // Deklarasi variabel n

System.out.print("masukkan jumlah n : "); //Meminta pengguna memasukan


jumlah n
n = keyboard.nextInt(); //membaca nilai n dari keyboard

for (double z = -4; z <= 4; z = z + 0.25) { // Perulangan untuk nilai z dari -4


hingga 4 dengan increment 0.25
int jumBintang = normal(n, z);//// Menghitung jumlah bintang berdasarkan
nilai n dan z
bintang(jumBintang); // Mencetak jumlah bintang dalam bentuk bintang

}
}

static int normal(int n, double z) { // Deklarasi method normal

double f = 1 / Math.sqrt(2 * Math.PI) * Math.exp(-Math.pow(z, 2) / 2); //


Menghitung nilai f menggunakan rumus distribusi normal

return (int) Math.round(n * f); // Mengubah nilai f menjadi integer dan


mengembalikannya sebagai jumlah bintang
}
static void bintang(int m) { // Deklarasi method bintang

for (int i = 1; i <= m; i++) { // Perulangan untuk jumlah bintang

System.out.print("*"); // Mencetak bintang


}

System.out.println(); // Mencetak newline character untuk memulai baris baru


}
}

d. Teks program memakai tabel berikut

Perintah Arti
package modul11_alpro; Deklarasi package

import java.util.Scanner; Deklarasi import scanner

public class modul11Tugas4 { Kelas dengan nama “modul11Tugas4”

public static void main(String[] args) { Metode utama dalam sebuah program

Scanner keyboard = new Membuat Scanner Keyboard


Scanner(System.in);
int n; Deklarasi variabel n
System.out.print("masukkan jumlah n : Meminta pengguna memasukkan jumlah n
"); dan membacanya
n = keyboard.nextInt();
for (double z = -4; z <= 4; z = z + 0.25) { Melakukan perulangan untuk nilai z dari -4
int jumBintang = normal(n, z); hingga 4 dengan increment 0.25.
bintang(jumBintang); Di setiap perulangan, menghitung jumlah
bintang dengan memanggil fungsi
} normal(n, z).
} Menggunakan nilai yang dihasilkan dari
static int normal(int n, double z) { fungsi normal untuk mencetak jumlah
double f = 1 / Math.sqrt(2 * Math.PI) * bintang dalam bentuk bintang dengan
Math.exp(-Math.pow(z, 2) / 2); memanggil fungsi bintang. Dan Mencetak
return (int) Math.round(n * f); jumlah bintang dalam bentuk bintang pada
} setiap perulangan
static void bintang(int m) {
for (int i = 1; i <= m; i++) {
System.out.print("*");
}
System.out.println();
}
}

e. Screenshot Program

Anda mungkin juga menyukai