Professional Documents
Culture Documents
Algoritma Pemrograman
DOSEN PENGAMPU:
Oleh:
Rizky Annisa
22076018
Pendidikan Informatika
FAKULTAS TEKNIK
2022
CONTOH KASUS 1
Buatlah program untuk mengurutkan sejumlah data yang tersimpan dalam
suatu array berukuran tertentu. Hasil pengurutan ditampilkan ke layar.
Analisis Kebutuhan
Kebutuhan konstanta
Perlu konstanta untuk menetapkan banyaknya elemen array, misal N dengan
sembarang (misal nilai 5) sbb:
#define N 5
Kebutuhan fungsi
Fungsi untuk mengurutkan data dapat mengimplementasikan algoritma
selection sort yang sudah disampaikan.
Implementasi dalam C :
/*Programmer: Rizky Annisa
NIM: 22076018
#include <stdio.h>
#include <stdlib.h>
main(){
printf ("\n\
n=======================================================
=======================================================
==\n");
printf ("\n\t\tSORTING BERSIFAT ASCENDING ATAU TERURUT DARI NILAI
TERKECIL KE TERBESAR\n");
printf ("\
n=======================================================
=======================================================
==\n\n");
printf("\n Programer:\tRizky Annisa\n");
printf("\n NIM\t:\t22076018\n");
printf("\n Prodi\t:\tPendidikan Teknik Informatika\n");
printf("\n*************************************************\n\n");
int i;
int nilainya;
printf ("\
n=======================================================
=============\n");
//data yg telah diurut ditampilkan ke layar
printf("\n\nNilai terurut secara ascending...\n\n");
for (i = 0; i < N; i++){
//salin dulu data dari array
nilainya = nilai[i];
printf ("%d\t", nilainya);
}
printf ("\n\
n=======================================================
=============\n"); //pindah baris
printf ("Selesai... Tekan Enter...");
getch();
}
CONTOH KASUS 2
Buatlah program seperti pada kasus 1 tetapi urutannya dari besar ke kecil atau
descending order.
Analisis Kebutuhan
Analisis kebutuhan untuk kasus ini relatif sama dengan kasus no 1, hanya saja fungsi
untuk mengurutkan data diubah dari pengurutan dengan sifat ascending atau dari kecil ke
besar menjadi descending atau dari besar ke kecil. Perubahan juga dilakukan pada penamaan
variabel sesuai maksud dari isi variabel-variabel tersebut. Perhatikan perubahan yang
dilakukan pada fungsi urutkan() berikut:
void urutkan() { //metode selection sort
int indexMaks, i, j;
int temp;
#include <stdio.h>
#include <stdlib.h>
//konstanta N menunjukkan banyaknya data
#define N 5
void urutkan();
main(){
printf ("\n\
n=======================================================
=======================================================
=========\n");
printf ("\n\t\t\tSORTING BERSIFAT ASCENDING ATAU TERURUT DARI NILAI
TERBESAR KE TERKECIL\n");
printf ("\
n=======================================================
=======================================================
=========\n\n");
printf("\n Programer:\tRizky Annisa\n");
printf("\n NIM\t:\t22076018\n");
printf("\n Prodi\t:\tPendidikan Teknik Informatika\n");
printf("\n*************************************************\n\n");
int i;
int nilainya;
printf ("\
n=======================================================
=============\n");
//data yg telah diurut ditampilkan ke layar
printf ("\nNilai terurut secara ascending...\n\n");
for (i = 0; i < N; i++){
//salin dulu data dari array
nilainya = nilai[i];
printf ("%d\t", nilainya);
}
printf ("\n\
n=======================================================
=============\n"); //pindah baris
printf ("Selesai... Tekan Enter...");
getch();
}
CONTOH KASUS 3
Modifikasilah program pada kasus 2 dimana bagian untuk mendisplaykan informasi
dibuat menjadi sebuah fungsi.
Analisis Kebutuhan
Untuk mendisplaykan data perlu dibuat suatu fungsi, misal bernama fungsi infokan().
fungsi ini dibuat tanpa parameter dan tanpa nilai balik, sehingga kebutuhan variabel dibuat
bersifat lokal, kecual variabel array nilai[].
Fungsi infokan() membutuhkan variabel lokal sebagai berikut:
Variabel untuk konter perulangan, beri nama i bertipe int. Perulangan
dibutuhkan untuk melakukan pendisplayan setiap data dari array nilai[]
dengan banyak perulangan sebanyak elemen array tersebut;
Variabel untuk penampung data yang nilainya diambil dari array, beri
nama nilainya dan bertipe int.
#include <stdio.h>
#include <stdlib.h>
void urutkan();
void infokan();
main(){
printf ("\n\
n=======================================================
=======================================================
=========\n");
printf ("\n\t\t\t PENGGUNAAN FUNGSI SORTING DAN FUNGSI UNTUK
MENDISPLAY DATA\n");
printf ("\
n=======================================================
=======================================================
=========\n\n");
printf("\n Programer:\tRizky Annisa\n");
printf("\n NIM\t:\t22076018\n");
printf("\n Prodi\t:\tPendidikan Teknik Informatika\n");
printf("\n*************************************************\n\n");
int i;
int datanya;
printf ("\
n=======================================================
=============\n");
void infokan(){
int i, datanya;
PROGRAM
OUTPUT
CONTOH KASUS 4
Buatlah program pengolahan nilai mahasiswa seperti kasus-kasus sebelumnya, hanya
saja program diharapkan disertai dengan fasilitas pencarian dan pengurutan berdasarkan nilai
akhir mahasiswa yang bersangkutan.
Analisis Kebutuhan
Kita mengacu ke kasus 3 pada pembahasan tentang pencarian, dimana struktur data
yang digunakan berupa array of struct of struct, atau array dari suatu struct yang di dalamnya
juga merupakan bentukan struct, yaitu DATAMHS. Pengembangan program tersebut terdapat
pada penambahan fungsi untuk melakukan pengurutan data mahasiswa. Perlu diingat, bahwa
pengurutan yang akan dilakukan adalah dalam rangka menentukan ranking mahasiswa
berdasarkan perolehan nilai akhir atau variabel field dataMhs[].nilai.nAkhir. Fungsi untuk
mengurutkan digunakan selection sort, seperti yang sudah kita bahas sebelumnya.
Kebutuhan untuk implementasi fungsi pengurutan meliputi:
Variabel indexMaks, digunakan untuk penampung sementara nomor
indeks array yang dianggap bernilai paling tinggi dan bertipe int;
Variabel i, sebagai konter perulangan bertipe int;
Variabel j, sebagai penyimpan nomor indeks yang dibandingkan nilainya
dengan data pada indeks i;
Variabel temp sebagai variabel penampung data sementara dari
keseluruhan data pada struct bertipe DATAMHS.
Secara keseluruhan, kebutuhan fungsi untuk kasus ini adalah:
Fungsi judul(), yang merupakan fungsi tanpa parameter tanpa nilai balik,
bertugas menampilkan judul program;
Fungsi bacaMhs(), merupakan fungsi untuk membaca identitas seluruh
mahasiswa;
Fungsi bacaNilai(int), merupakan fungsi untuk membaca komponen nilai
dari mahasiswa yang bersangkutan. Fungsi ini dipanggil dari dalam fungsi
bacaMhs(), oleh karena itu membutuhkan passing parameter int yang
merepresentasikan nomor indeks array dari data mahasiswa yang
bersangkutan;
Fungsi infoMhs(int), merupakan fungsi yang bertugas menampilkan
informasi setiap mahasiswa melalui passing parameter int sebagai nomor
indeks data mahasiswa pada array of struct;
Fungsi hitungAkhir(double, double, double, double), merupakan fungsi
untuk menghitung nilai akhir berdasarkan passing parameter nilai mid,
nilai uas, nilai tugas dan nilai quiz;
Fungsi konversiHuruf(double), merupakan fungsi untuk mengkonversikan
nilai akhir menjadi nilai huruf, sesuai dengan ketentuan yang ditetapkan.
Passing parameter dari fungsi ini merupakan nilai akhir hasil perhitungan
oleh fungsi hitungAkhir();
Fungsi cariData(char[]), merupakan fungsi yang bertugas mencari data
tertentu dalam array of struct. Passing parameter dari fungsi merupakan
nomor nim mahasiswa yang akan dicari.
Fungsi urutkan(), fungsi untuk mengurutkan data secara descending
(diurut dari nilai paling besar), berdasarkan data nilai akhir setiap
mahasiswa.
Fungsi-fungsi tersebut sudah kita buat pada pembahasan-pembahasan sebelumnya,
walaupun tentu saja terdapat perubahan untuk disesuaikan dengan kebutuhan pada
penyelesaian kasus ini.
Secara lengkap Implementasi dalam C dapat Anda pelajari dari listing kode berikut
ini:
/*Programmer: Rizky Annisa
NIM: 22076018
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//kedua tipe MHS dan NILAI digunakan untuk tipe bentukan baru
//suatu stract of struct atau struct di dalam struct, sehingga
//struct yang baru memili seluruh data baik identitas maupun
//nilai2 mahasiswa, sbb:
typedef struct DATAMHS{
MHS mhs;
NILAI nilai;
} DATAMHS;
void urutkan();
//deklarasi variabel global berupa array of struct dari tipe DATAMHS sbb:
DATAMHS dataMhs[N]; //banyak mahasiswa adalah N orang
void main(){
printf ("\
n=======================================================
=============\n");
printf ("\n\nMengurutkan Data Mahasiswa\n");
printf ("____________________________\n");
printf ("\nTekan Enter...");
printf ("\
n=======================================================
=============\n");
getch();
urutkan();
printf ("\nData diurutkan secara descending...\n");
for(i = 0; i < N; i++){
//panggil fungsi infoMhs() mulai dari i=0, atau yg pertama
infoMhs(i);//nilai i adalah passing parameter yng menyatakan no indeks
array
printf ("\
n=======================================================
=============\n");
}
printf("Selesai... Tekan Enter...");
getch();
}
void judul(){
printf ("\n\
n=======================================================
=======================================================
=========\n");
printf ("\n\t\t\t PENGGUNAAN FUNGSI SORTING DENGAN MENGGUNAKAN
ARRAY OF STRUCT\n");
printf ("\
n=======================================================
=======================================================
=========\n\n");
printf("\n Programer:\tRizky Annisa\n");
printf("\n NIM\t:\t22076018\n");
printf("\n Prodi\t:\tPendidikan Teknik Informatika\n");
printf("\n*************************************************\n\n");
printf("Tekan tombol enter...\n");
getch();
}
void bacaMhs(){
int i; //variable konter perulangan
char namanya[30]; //penyimpan sementara nama mahasiswa
char nimnya[4]; //penyimpan sementara nim mahasiswa
printf ("______________________________________\n");
printf ("\nKetik Nilai MID\t\t: ");
scanf ("%lf", &midnya); fflush(stdin);
printf ("Ketik Nilai UAS\t\t: ");
scanf ("%lf", &uasnya); fflush(stdin);
printf ("Ketik Nilai Tugas\t: ");
scanf ("%lf", &tugasnya); fflush(stdin);
printf ("Ketik Nilai Quiz\t: ");
scanf ("%lf", &quiznya); fflush(stdin);
#include <stdio.h>
main(){
printf ("\n\
n=======================================================================
================================================\n");
printf ("\n\t\t\tSORTING BERSIFAT ASCENDING ATAU TERURUT DARI NILAI
TERKECIL KE TERBESAR\n");
printf ("\
n=======================================================================
================================================\n\n");
printf("\n Programer:\tRizky Annisa\n");
printf("\n NIM\t:\t22076018\n");
printf("\n Prodi\t:\tPendidikan Teknik Informatika\n");
printf("\n*************************************************\n\n");
int i, data;
int nilai[] = {87, 67, 88, 90, 55, 80, 70};
urutkan(nilai);
printf ("\n\t\t\tData setelah diurutkan\n");
printf ("\t____________________________________________________\n\n");
for (i = 0; i < 7; i++){
printf("\t%d",nilai[i]);
}
}
OUTPUT
KASUS SORTING 2
Mengurutkan data pada array secara descending (dari besar ke kecil).
#include <stdio.h>
main(){
printf ("\n\
n==================================================================
=====================================================\n");
printf ("\n\t\t\tSORTING BERSIFAT ASCENDING ATAU TERURUT DARI
NILAI TERBESAR KE TERKECIL\n");
printf ("\
n==================================================================
=====================================================\n\n");
printf("\n Programer:\tRizky Annisa\n");
printf("\n NIM\t:\t22076018\n");
printf("\n Prodi\t:\tPendidikan Teknik Informatika\n");
printf("\n*************************************************\n\n");
int i, data;
int nilai[] = {87, 67, 88, 90, 55, 80, 70};
printf ("\n\t\t\tData Sebelum Diurutkan\n");
printf ("\t____________________________________________________\n\n");
for(i = 0; i < 7; i++){
printf ("\t%d",nilai[i]);
}
printf ("\n\n\
t====================================================\n");
urutkan(nilai);
printf ("\n\t\t\tData setelah diurutkan\n");
printf ("\t____________________________________________________\n\n");
for (i = 0; i < 7; i++){
printf ("\t%d",nilai[i]);
}
printf ("\n");
}
OUTPUT
KASUS SORTING 3
Mengurutkan data sejumlah mahasiswa berdasarkan IPK mahasiswa.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 3
main(){
printf ("\n\
n==================================================================
=====================================================\n");
printf ("\n\t\t\t\tDATA MAHASISWA BERDASARKAN IPK (DARI BESAR KE
KECIL)\n");
printf ("\
n==================================================================
=====================================================\n\n");
printf("\n Programer:\tRizky Annisa\n");
printf("\n NIM\t:\t22076018\n");
printf("\n Prodi\t:\tPendidikan Teknik Informatika\n");
printf("\n*************************************************\n\n");
int i;
MHS mhs[N];
entriData(mhs);
printf ("\n\t\t\tData Sebelum Diurutkan\n");
printf
("____________________________________________________________________\n\n");
for (i = 0; i < N; i++){
printf (" Mahasiswa ke-%d\n", i+1);
tampilkan(mhs, i);
}
printf("\n");
urutkan(mhs);
printf ("\n\t\t\tData Setelah Diurutkan:\n");
printf
("____________________________________________________________________\n\n");
for (i = 0; i < N; i++){
printf (" Mahasiswa ke-%d\n", i+1);
tampilkan(mhs, i);
}
}
void entriData(MHS myMhs[]){
char namanya[20], nimnya[5];
double ipknya;
int i;
printf ("\nEntri Data Mahasiswa\n");
printf ("==========================\n\n");
for (i = 0; i < N; i++){
printf (" Mahasiswa ke-%d\n", i+1);
printf ("__________________________\n\n");
printf ("Ketikkan Nama\t: ");
gets(namanya); fflush(stdin);
printf ("Ketikkan NIM\t: ");
gets(nimnya); fflush(stdin);
printf ("Ketikkan IPK\t: ");
scanf ("%lf", &ipknya); fflush(stdin);
//masukkan ke array
strcpy(myMhs[i].nama, namanya);
strcpy(myMhs[i].nim, nimnya);
myMhs[i].ipk = ipknya;
}
printf ("\
n==================================================================
==\n");
printf ("Entri Data selesai... Tekan enter...");
printf ("\
n==================================================================
==\n");
getch();
}
void urutkan(MHS mhsku[]){
int i, j, posisi;
double terbesar;
MHS temp;
for(i=0;i<N;i++){
terbesar = mhsku[i].ipk;
posisi = i;
for(j=i+1;j<N;j++){
if(mhsku[j].ipk > terbesar){
terbesar = mhsku[j].ipk;
posisi = j;
}
}
//pertukarkan posisi data pada array
temp = mhsku[i];
mhsku[i] = mhsku[posisi];
mhsku[posisi] = temp;
}
}
void tampilkan(MHS mhs[], int i){
printf ("-----------------------------\n");
printf ("Nama : %s\n", mhs[i].nama);
printf ("NIM : %s\n", mhs[i].nim);
printf ("IPK : %0.2lf\n", mhs[i].ipk);
printf ("-----------------------------\n");
}
PROGRAM
OUTPUT
KASUS SORTING 4
Mengurutkan data hasil lomba berbasis nilai atau skor (membuat sumur).
#define N 2
#define PHI 3.14
//deklarasi fungsi2
void entriData(LOMBA lmb[]);
void entriLomba(LOMBA lmb[], LOMBA lom, int i);
void salin(LOMBA lmb[], LOMBA copy[]);
void tampilInfo(LOMBA lmb[]);
void urutkan(LOMBA lmb[]);
double hitVol(LOMBA lm);
main(){
printf ("\n\
n==================================================================
=====================================================\n");
printf ("\n\t\t\t\tDATA HASIL LOMBA MEMBUAT SUMUR (DARI BESAR KE
KECIL)\n");
printf ("\
n==================================================================
=====================================================\n\n");
printf("\n Programer:\tRizky Annisa\n");
printf("\n NIM\t:\t22076018\n");
printf("\n Prodi\t:\tPendidikan Teknik Informatika\n");
printf("\n*************************************************\n\n");
printf ("\nData:\n");
printf ("--------------------------------------------\n");
for (i = 0; i < N; i++){
printf ("\nPeserta ke-%d\n", i+1);
printf ("\nNama: %s Nomor: %s\n", lmb[i].psrt.nama, lmb[i].psrt.noPeserta);
printf ("Diameter : %0.2lf Meter\n", lmb[i].smr.diameter);
printf ("Kedalaman: %0.2lf Meter\n", lmb[i].smr.tinggi);
printf ("Volume : %0.2lf Meter Kubik\n", lmb[i].smr.volume);
printf ("--------------------------------------------\n");
}
}
//deklarasi fungsi2
void judul();
void entriData(LOMBA lmb[]);
void entriLomba(LOMBA lmb[], LOMBA lom, int i);
void salin(LOMBA lmb[], LOMBA copy[]);
void tampilInfo(LOMBA lmb[]);
void urutkan(LOMBA lmb[]);
double hitVol(LOMBA lm);
void juara(LOMBA lmb[]);
void tampilkan(LOMBA lmb[], int i);
void menu(LOMBA lom1[], LOMBA lom2[]);
void cariData(LOMBA lmb[], int *pss, int *stat);
main(){
printf ("\n\
n=======================================================
=======================================================
=========\n");
printf ("\n\t\t\t\t PROGRAM PENGELOLAAN HASIL LOMBA MEMBUAT
SUMUR\n");
printf ("\
n=======================================================
=======================================================
=========\n");
printf("\n Programer:\tRizky Annisa\n");
printf("\n NIM\t:\t22076018\n");
printf("\n Prodi\t:\tPendidikan Teknik Informatika\n");
printf("\n*************************************************\n\n");
do{
printf ("\nMENU PILIHAN\n");
printf ("=========================\n");
printf ("1. Cari Data Tertentu\n");
printf ("2. Tampilkan Para Juara\n");
printf ("3. Lihat Informasi\n");
printf ("0. Selesai\n");
printf ("=========================\n");
printf ("Ketikkan nomor pilihan (1, 2, 3 atau 0): ");
scanf ("%d", &pilihan); fflush(stdin);
switch (pilihan){
case 0: printf ("\nBye...bye...\n");
exit(1);
case 1: cariData(lom1, &posisi, &stat);
if (stat){
printf ("\nData yg ditemukan:\n");
tampilkan(lom1, posisi);
}
break;
case 2: juara(lom2); break;
case 3: tampilInfo(lom1); break;
default: printf ("\nNomor pilihan tidak ada... Tekan Enter");
getch();
}
printf ("\nMau ngulang lagi (Y/T): ");
jawab = getche();
} while (toupper(jawab)=='Y');
printf ("\nTerima kasih.... Tekan Enter...");
getch();
}
void entriData(LOMBA lmb[]){
int i;
LOMBA lomba;
PESERTA psrt;
SUMUR smr;
printf ("\nData:\n");
printf ("--------------------------------------------\n");
for (i = 0; i < N; i++){
printf ("\nPeserta ke-%d\n", i+1);
printf ("\nNama: %s Nomor: %s\n", lmb[i].psrt.nama,
lmb[i].psrt.noPeserta);
printf ("Diameter : %0.2lf Meter\n", lmb[i].smr.diameter);
printf ("Kedalaman: %0.2lf Meter\n", lmb[i].smr.tinggi);
printf ("Volume : %0.2lf Meter Kubik\n", lmb[i].smr.volume);
printf ("--------------------------------------------\n");
}
}
void urutkan(LOMBA lmb[]){
int i, j, posisi;
double terbesar;
LOMBA temp;
PROGRAM
OUTPUT
KASUS SORTING 6
Pengelolaan data lomba membuta sumur untuk N orang peserta dan menentukan juara
1, 2 dan 3 serta 3 peserta terburuk.Lengkapi dengan menu pilihan.
#define N 3
#define PHI 3.14
//deklarasi fungsi2
void judul();
void entriData(LOMBA lmb[]);
void entriLomba(LOMBA lmb[], LOMBA lom, int i);
void salin(LOMBA lmb[], LOMBA copy[]);
void tampilInfo(LOMBA lmb[]);
void urutkan(LOMBA lmb[]);
double hitVol(LOMBA lm);
void juara(LOMBA lmb[]);
void pecundang(LOMBA lmb[]);
void tampilkan(LOMBA lmb[], int i);
void menu(LOMBA lom1[], LOMBA lom2[]);
void cariData(LOMBA lmb[], int *pss, int *stat);
main(){
printf ("\n\
n=======================================================
=======================================================
=========\n");
printf ("\n\t\t\t\t PROGRAM PENGELOLAAN HASIL LOMBA MEMBUAT
SUMUR\n");
printf ("\
n=======================================================
=======================================================
=========\n");
printf("\n Programer:\tRizky Annisa\n");
printf("\n NIM\t:\t22076018\n");
printf("\n Prodi\t:\tPendidikan Teknik Informatika\n");
printf("\n*************************************************\n\n");
do{
printf ("\nMENU PILIHAN\n");
printf ("=========================\n");
printf ("1. Cari Data Tertentu\n");
printf ("2. Tampilkan Para Juara\n");
printf ("3. Tampilkan Para Pecundang\n");
printf ("4. Lihat Informasi\n");
printf ("0. Selesai\n");
printf ("=========================\n");
printf ("Ketikkan nomor pilihan (1, 2, 3, 4 atau 0): ");
scanf ("%d", &pilihan); fflush(stdin);
switch(pilihan){
case 0: printf ("\nBye...bye...\n");
exit(1);
case 1: cariData(lom1, &posisi, &stat);
if(stat){
printf ("\nData yg ditemukan:\n");
tampilkan(lom1, posisi);
}
break;
case 2: juara(lom2); break;
case 3: pecundang(lom2); break;
case 4: tampilInfo(lom1); break;
default: printf ("\nNomor pilihan tidak ada... Tekan Enter");
getch();
}
printf ("\nMau ngulang lagi (Y/T): ");
jawab = getche();
} while (toupper(jawab)=='Y');
printf ("\nTerima kasih.... Tekan Enter...");
getch();
}
printf ("\nData:\n");
printf ("--------------------------------------------\n");
for (i = 0; i < N; i++){
printf ("\nPeserta ke-%d\n", i+1);
printf ("\nNama: %s Nomor: %s\n", lmb[i].psrt.nama,
lmb[i].psrt.noPeserta);
printf ("Diameter : %0.2lf Meter\n", lmb[i].smr.diameter);
printf ("Kedalaman: %0.2lf Meter\n", lmb[i].smr.tinggi);
printf ("Volume : %0.2lf Meter Kubik\n", lmb[i].smr.volume);
printf ("--------------------------------------------\n");
}
}
PROGRAM
OUTPUT