Anda di halaman 1dari 30

Membangun Aplikasi

Sederhana
Oleh : Tim Penyusun MKU Pengantar Coding.
Lisensi Dokumen:
Copyright © 2020 Universitas Negeri Padang
Seluruh dokumen di e-Learning Universitas Negeri Padang, hanya digunakan untuk kalangan Internal
Universitas, untuk kebutuhan Perkuliahan Online. Penggunaan dokumen ini di luar UNP tidak diizinka
dan tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari
Penulis dan Universitas Negeri Padang.

A. Capaian Pembelajaran
1. Mampu menunjukan pemahaman terhadap suatu kasus pemrograman
2. Mampu menyusun skenario program dan mendesain konstruksi program aplikasi sederhana
berbasis teks (algoritma bahasa verbal dan kode semu)
3. Mampu melakukan analisis kebutuhan setiap bagian (modul) penyusun program aplikasi
sederhana berbasis teks
4. Mampu membuat program lengkap dalam menyelesaikan kasus yang diberikan untuk
membangun suatu program aplikasi sederhana berbasis teks.

B. Indikator Pencapaian Kompetensi


1. Dapat memahami persoalan dalam memecahkan suatu kasus pemrograman;
2. Dapat menyusun skenario programdan merancang konstruksi suatu program aplikasi
sederhana berbasis teks;
3. Dapat melakukan analisis kebutuhan untuk menyusun program;
4. Dapat membuat program aplikasi berbasis teks untuk suatu permasalahan sederhana.

C. Pokok–Pokok Materi
1. Memahami Permasalahan
2. Mnyusun Skenario dan Merancang Konstruksi Program
3. Analisis Kebutuhan Program
4. Implementasi Program
D. Uraian Materi
Membangun suatu program memerlukan pemahaman yang komprehensif terkait kasus yang ingin
diselesaikan. Setiap kasus memiliki domainnya sendiri, hal ini menuntut programmer melakukan riset
atau kajian terhadap permasalahan yang dihadapi. Kompleksitas permasalahan yang dihadapi tergantung
hasil kajian tersebut. Hal ini dapat mempermudah seorang programmer mengimplementasikan program
sesuai kebutuhan dan tuntutan spesifikasi dari program aplikasi yang akan dikembangkan.

Terdapat beberapa langkah penting yang sebaiknya dilakukan programmer; yaitu, berusaha
memahami persoalan, merncang konstruksi dari program aplikasi yang akan dibuat, melakukan analisis
kebutuhan program dan melakukan koding sesuai rancangan. Berikutnya akan dicoba menyelesaikan
suatu kasus yang beberapa bagiannya telah dibahas pada modul-modul sebelumnya, sehingga anda dapat
memahami alur dan kesinambungan alur pikir terkait penyelesaian masalah pemrograman.

Kasus yang akan diselesaikan adalah: Kita akan membuat program aplikasi sederhana berbasis
teks untuk pengelolaan nilai mahasiswa dalam mata kuliah tertentu dengan ketentuan sebagai berikut:

 Program dapat menyelesaikan masalah penilaian sekelompok mahasiswa dalam mata kuliah tertentu.
 Program mesti memiliki fasilitas berikut:
 Dapat mengentri identitas sekelompok mahasiswa.
 Dapat mengentrikan komponen nilai mid, nilai uas, nilai tugas dan nilai quiz.
 Dapat menghitung nilai akhir berdasar komponen nilai dan persentasi setiap komponen penilaian.
 Dapat mengkonversi nilai akhir menjadi nilai huruf mahasiswa tersebut berdasarkan
ketentuan.penilaian huruf.
 Dapat membuat ranking nilai mahasiswa berdasarkan nilai akhir yang diperoleh.
 Dapat mencari informasi mahasiswa tertentu yang diinginkan.

 Dapat menampilkan rekapitulasi nilai-nilai seluruh mahasiswa.

1. Memahami Permasalahan
Kasus penilaian suatu mata kuliah

2. Skenario program dan Konstruksi Program


Skenario Program
Kasus penilaian mahasiswa dapat dibagi ke dalam beberapa sub-masalah. Ketika menjalankan
program, diharapkan muncul judul dan menu pilihan, sehingga kita membutuhkan bagian (modul)
untuk menampilkan judul dan bagian yang menampilkan menu pilihan, sehingga skenario dari
program yang akan dibuat dapat berupa:
 Ketika program dijalankan akan ditampilkan judul dari program lalu user diminta menekan enter
untuk melanjkutkan program
 Menu pilihan ditampilkan, terdiri dari:
 Entri Identitas Mahasiswa
 Entri Nilai Mahsiswa
 Lihat Daftar Mahasiswa
 Lihat Daftar Nilai
 Cari Mahasiswa Tertentu
 Lihat para Juara
 Lihat Rekapitulasi Nilai
 Keluar dari Program
 Pada pilihan 1, yaitu Entri Identitas Mahasiswa, user diminta entri (memasukan) data identitas
mahasiswa yang terdiri dari nama dan nomor induk mahasiswa sejumlah data yang ditetapkan.
Jika entri selesai, user ditanya apakah akan kembali ke Manu Pilihan atau keluar dari program.
 Pilihan nomor 2, Entri Nilai Mahasiswa. Program akan melakukan pengecekan terlebih dahulu
apakah data mahasiswa telah dientri? Jika data identitas mahasiswa telah ada, maka user diminta
mengentrikan komponen nilai mid, uas, tugas dan quiz. Jika belum, maka akan muncul keterangan
bahwa data masih kosong, dan program akan kembali ke menu pilihan.
 Pilihan nomor 3, Lihat Daftar Mahasiswa. Program akan melakukan pengecekan terlebih dahulu
apakah data mahasiswa telah dientri? Jika data identitas mahasiswa telah ada, maka akan
ditampilkan daftar mahasiswa. Jika belum, maka akan muncul keterangan bahwa data masih
kosong, dan program akan kembali ke menu pilihan.
 Pilihan nomor 4, Lihat Daftar Nilai. Program akan melakukan pengecekan terlebih dahulu apakah
data mahasiswa dan nilai sudah ada? Jika data sudah ada maka program akan menampilkan daftar
yang diminta. Jika belum, maka akan muncul keterangan bahwa data masih kosong, dan program
akan kembali ke menu pilihan.
 Pilihan nomor 5, Cari Mahasiswa Tertentu. Program akan melakukan pengecekan data terlebih
dahulu. Jika data sudah ada, maka pencarian data mahasiswa tertentu dilakukan, jika belum akan
muncul keterangan bahwa data masih kosong, dan program akan kembali ke menu pilihan.
 Pilihan nomor 6, Lihat Para Juara. Program akan melakukan pengecekan data terlebih dahulu. Jika
data sudah ada, maka program akan mengurutkan data mahasiswa berdasarkan nilai akhir lalu
menampilkan daftar para juara. Jika belum ada, maka akan muncul keterangan bahwa data masih
kosong, dan program akan kembali ke menu pilihan.
 Pilihan nomor 7, Lihat Rekapitulasi Nilai. Program akan melakukan pengecekan data terlebih
dahulu. Jika data sudah ada, maka program akan melakukan perhitungan-perhitungan mengenai:
 Menghitung rata-rata nilai mid
 Menghitung rata-rata nilai uas
 Menghitung rata-rata nilai tugas
 Menghitung rata-rata nilai quiz
 Menghitung rata-rata nilai akhir
 Merekap nilai huruf yang diperoleh mahasiswa
Kemudian menampilkan informasi yang diminta. Jika belum ada, maka akan muncul
keterangan bahwa data masih kosong, dan program akan kembali ke menu pilihan.

 Pilihan nomor 0. Keluar dari program.


 Jika user memasukkan nomor selain nomor pilihan yang sah, maka program akan memberikan
informasi, bahwa nomor pilihan tidak tersedia dan program akan kembali ke manu pilihan.

Konstrtuksi Program

Supaya bisa menerapkan skenario program, kita sebaiknya menyusun konstruksi program. Bagian-
bagian program apa saja yang diperlukan dan bagaimana hubungan antar bagian tersebut.

Berikut ini adalah konstruksi program yang dirancang:

PENILAIAN

judul MENU

Entri Mhs Entri Nilai Daftar mhs Daftar nilai Cari Mhs Juara rekapitulasi
mmPENIL mmPENILAI

Hitung nilai Konversi nilai infoMhs Cari data

urutkan

Rekap Nilai Rekap Nilai Rekap Nilai Rekap Nilai Rekap Nilai Rekap Nilai

Kita bisa melihat bagaimana konstruksi dari program yang akan dibuat dan hubungan antar bagian
program. Bagian bagian ini akan diimplementasikan menjadi fungsi-fungsi dengan tugas masing-
masing. Setiap fungsi yang akan dibuat dianalisis kebutuhannya, seperti kebutuhan variabel dan
kebutuhan proses spesifik dari fungsi yang bersangkutan.

3. Analisis Kebutuhan Program


a) Kebutuhan Struktur Data
Struktur data yang akan digunakan adalah structur struct of struct seperti didefinisikan pada latihan
sebelumnya, liaht kembali struktur yang digunakan.
Struct yang pertama:

typedef struct MHS { //deklarasi tipe data bentukan bertipe struktur

char nama[30]; //panjang nama mahasiswa adalah 30 karakter

char nim[4]; //panjang nim mahasiswa adalah 5 karakter

} MHS; //nama tipe bentukan adalah MHS

Struct yang kedua:

typedef struct NILAI{

double mid;

double uas;

double tugas;

double quiz;

double nAkhir; //dihitung dengan fungsi hitungAkhir()

char nHuruf; //diisi melalui pemanggilan fungsi konversiHuruf()

} NILAI;

Sedangkan struct yang ketiga berisi struct ke 1 dan ke 2:

//kedua tipe MHS dan NILAI digunakan untuk tipe bentukan baru

//suatu stract of struct atau struct di dalam struct, sehingga

//struct yang baru memiliki seluruh data baik identitas maupun

//nilai2 mahasiswa, sbb:

typedef struct DATAMHS{


MHS mhs;

NILAI nilai;

} DATAMHS;

b) Kebutuhan Konstanta
Konstanta yang dibutuhan meliputi konstanta yang menyatakan banyaknya elemen array
(representasi banyak mahasiswa) dan konstanta untuk besar bobot komponen nilai, berikut:

#define N 3 //banyaknya mahassiswa

#define MID 0.25 //prosentase nilai mid adalah 25 persen

#define UAS 0.30 //prosentase nilai uas adalah 30 persen

#define TGS 0.30 //prosentase nilai tugas adalah 30 persen

#define QSZ 0.15 //prosentase nilai quiz adalah 15 persen

c) Kebutuhan Variabel Global


Satu buah variabel global yang menyatakan variabel array of struct bertipe DATAMHS:

DATAMHS dataMhs[N]; //banyak mahasiswa adalah N orang

d) Kebutuhan Fungsi
Fungsi-fungsi yang dibutuhkan sesuai konstruksi program yang dirancang terdiri dari:

1. void judul();
2. void menu();
3. void bacaMhs();
4. void bacaNilai();
5. void daftarMhs();
6. void infoMhs(int i);
7. void daftarNilai();
8. void infoNilai(int i);
9. double hitungAkhir(double m, double u, double t, double q);
10. char konversiHuruf(double na);
11. void cariMhs();
12. int cariData(char nimnya[]);
13. void lihatJuara();
14. void urutkan();
15. void rekapNilai();
16. void rekapMid();
17. void rekapUas();
18. void rekapTugas();
19. void rekapQuiz();
20. void rekapAkhir();
21. void rekapHuruf();

4. Implementasi Program
Berikut adalah implementasi program aplikasi sederhana berbasis teks:

/* Nama File: projek.c

Program aplikasi sederhana berbasis teks tentang Sistem Informasi Penilaian

untuk suatu Mata Kuliah

Entri Mahasiswa

ENtri Nilai

MENU PILIHAN

- Cari Data

- Ubah Data

- Lihat Daftar Nilai

- Lihat Juara (3 ranking terbaik)

- Rekapitulasi Nilai:

- Rata-rata Nilai MID

- Rata-rata Nilai UAS

- Rata-rata Nilai TUGAS

- Rata-rata Nilai QUIZ

- Rata-rata Nilai AKHIR

- Rekapitulasi Nilai Huruf */

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

#include <stdlib.h>

#include <string.h>

#include <ctype.h>

#define N 4 //banyaknya mahassiswa

#define MID 0.25 //prosentase nilai mid adalah 25 persen

#define UAS 0.30 //prosentase nilai uas adalah 30 persen

#define TGS 0.30 //prosentase nilai tugas adalah 30 persen

#define QSZ 0.15 //prosentase nilai quiz adalah 15 persen

//mendefinisikan tipe bentukan berupa struct bernama MHS

typedef struct MHS{

char nama[30]; //panjang nama mahasiswa adalah 30 karakter

char nim[4]; //panjang nim mahasiswa adalah 5 karakter

} MHS; //nama tipe bentukan adalah MHS

typedef struct NILAI{

double mid;

double uas;

double tugas;

double quiz;

double nAkhir; //dihitung dengan fungsi hitungAkhir()

char nHuruf; //diisi melalui pemanggilan fungsi konversiHuruf()

} NILAI;

//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;

//deklarasi fungsi yang akan digunakan

void judul();

void menu();

void bacaMhs();

void bacaNilai();

void daftarMhs();

void infoMhs(int i);

void daftarNilai();

void infoNilai(int i);

double hitungAkhir(double m, double u, double t, double q);

char konversiHuruf(double na);

void cariMhs();

int cariData(char nimnya[]);

void lihatJuara();

void urutkan();

void rekapNilai();

void rekapMid();

void rekapUas();

void rekapTugas();

void rekapQuiz();
void rekapAkhir();

void rekapHuruf();

//deklarasi variabel global berupa array of struct dari tipe DATAMHS sbb:

DATAMHS dataMhs[N]; //banyak mahasiswa adalah N orang

void main(){

char jawab = 'Y';

judul();

do {

menu();

printf("\nKembali ke Menu Pilihan (Y/T)?: ");

jawab = getche();

}while(toupper(jawab)=='Y');

printf("\nTerima kasih...");

getch();

void judul(){

printf("===================================================\n");

printf("Program Pengolahan Data Mahasiswa\n");

printf("Programmer: Antu\n");

printf("===================================================\n");

printf("Tekan tombol enter...");

getch();
}

void menu(){

int pilihan;

printf("\nMENU PILIHAN\n");

printf("===================================\n");

printf("1. Entri Identitas Mahasiswa\n");

printf("2. Entri Nilai Mahasiswa\n");

printf("3. Lihat Daftar Mahasiswa\n");

printf("4. Lihat Daftar Nilai\n");

printf("5. Cari Mahasiswa Tertentu\n");

printf("6. Lihat Para Juara\n");

printf("7. Lihat Rekapitulasi Nilai\n");

printf("0. Keluar\n");

printf("===================================\n");

printf("Ketikan nomor pilihan: ");

scanf("%d", &pilihan); fflush(stdin);

switch(pilihan){

case 0: printf("Keluar dari Program\n");

printf("Terima kasih... Tekan Enter");

getch();

exit(1);

case 1: bacaMhs();
printf("\nTekan enter untuk kembali ke Manu Pilihan... ");

getch();

menu();

break;

case 2: bacaNilai();

printf("\nTekan enter untuk kembali ke Manu Pilihan... ");

getch();

menu();

break;

case 3: daftarMhs();

printf("\nTekan enter untuk kembali ke Manu Pilihan... ");

getch();

menu();

break;

case 4: daftarNilai();

printf("\nTekan enter untuk kembali ke Manu Pilihan... ");

getch();

menu();

break;

case 5: cariMhs();

printf("\nTekan enter untuk kembali ke Manu Pilihan... ");

getch();

menu();

break;

case 6: lihatJuara();
printf("\nTekan enter untuk kembali ke Manu Pilihan... ");

getch();

menu();

break;

case 7: rekapNilai();

printf("\nTekan enter untuk kembali ke Manu Pilihan... ");

getch();

menu();

default: printf("\nNomor pilihan tidak ada... Tekan Enter...");

getch();

menu();

void bacaMhs(){

int i; //variable konter perulangan

char namanya[30]; //penyimpan sementara nama mahasiswa

char nimnya[4]; //penyimpan sementara nim mahasiswa

printf("\nMembaca identitas sejumlah Mahasiswa\n");

printf("========================================\n");

printf("Jumlah Mahasiswa: %d Orang\n",N);

for(i=0;i<N;i++){

printf("Ketikkan nama Mahasiswa ke-%d: ",i+1);

gets(namanya); fflush(stdin); //baca nama mahasiswa


printf("Ketikkan NIM Mahasiswa : ");

gets(nimnya); fflush(stdin); //baca nim mahasiswa

//masukan nama dan nim mahasiswa ke array of struct

strcpy(dataMhs[i].mhs.nama, namanya); //perhatikan cara mengakses field

strcpy(dataMhs[i].mhs.nim, nimnya);

printf("\nEntri Data selesai... Tekan enter...");

void bacaNilai(){

double midnya, uasnya, tugasnya, quiznya, nAkhirnya;

char nHurufnya;

char namanya[30], nimnya[4];

int i;

printf("\nMembaca Nilai-nilai Mahasiswa\n");

printf("========================================\n");

//cek dulu apakah mahasiswanya sudah ada?

if(!strcmp(dataMhs[0].mhs.nim, "")){

printf("\nData Masih Kosong... Tekan enter...");

getch();

else{

for(i=0;i<N;i++){

strcpy(namanya, dataMhs[i].mhs.nama);
strcpy(nimnya, dataMhs[i].mhs.nim);

printf("Nama Mahasiswa: %s\n",namanya);

printf("NIM : %s\n",nimnya);

printf("Ketik nilai MID : ");

scanf("%lf",&midnya); fflush(stdin);

printf("Ketik nilai UAS : ");

scanf("%lf",&uasnya); fflush(stdin);

printf("Ketik nilai TUGAS: ");

scanf("%lf",&tugasnya); fflush(stdin);

printf("Ketik nilai QUIZ : ");

scanf("%lf",&quiznya); fflush(stdin);

//lalu masukkan ke array dataMhs, sbb

dataMhs[i].nilai.mid = midnya;

dataMhs[i].nilai.uas = uasnya;

dataMhs[i].nilai.tugas = tugasnya;

dataMhs[i].nilai.quiz = quiznya;

//lalu panggil fungsi untuk menghitung nilai akhir dan

//tampung nilai baliknya pada variabel nAkhirnya

nAkhirnya = hitungAkhir(midnya, uasnya, tugasnya, quiznya);

//lalu panggil fungsi untuk mengkonveri nilai akhir ke nilai huruf

//dg passing parameter berupa nilai akhir atau nAkhirnya

//tampung hasil atau nilai baliknya pada variabel nHurufnya

nHurufnya = konversiHuruf(nAkhirnya);

//simpan nilai akhir dan nilai huruf ke dataMhs

dataMhs[i].nilai.nAkhir = nAkhirnya;
dataMhs[i].nilai.nHuruf = nHurufnya;

printf("\n");

void daftarMhs(){

int i;

printf("\nDaftar Mahasiswa Peserta Kuliah\n");

printf("=========================================\n");

//cek dulu apakah datanya kosong?

if(!strcmp(dataMhs[0].mhs.nim,"")){

printf("\nData masih Kosong... Tekan enter...");

getch();

else{

for(i=0;i<N;i++){

printf("%d. ", i+1);

infoMhs(i);

//fungsi ini harus dimodifikasi melibatkan data nilai2

void infoMhs(int i){


char namanya[30]; //penyimpan sementara nama mahasiswa

char nimnya[4]; //penyimpan sementara nim mahasiswa

//salin dulu data mahasiswa ke variabel sementara

strcpy(namanya, dataMhs[i].mhs.nama);

strcpy(nimnya, dataMhs[i].mhs.nim);

//tampilkan informasi mahasiswa yang diminta

printf("Nama Mahasiswa: %s\n", namanya);

printf("\tNIM : %s\n", nimnya);

printf("========================================\n");

void daftarNilai(){

int i;

printf("\nDaftar Nilai Mahasiswa Peserta Kuliah\n");

printf("=========================================\n");

//cek dulu datanya

if(dataMhs[i].nilai.nAkhir == 0.0){

printf("Data masih Kosong... Tekan enter...");

getch();

else{

for(i=0;i<N;i++){

printf("%d. ", i+1);

infoNilai(i);

}
}

void infoNilai(int i){

char namanya[30]; //penyimpan sementara nama mahasiswa

char nimnya[4]; //penyimpan sementara nim mahasiswa

double midnya, uasnya, tugasnya, quiznya, nAkhirnya;

char nHurufnya;

//salin dulu data nilai ke variabel sementara

strcpy(namanya, dataMhs[i].mhs.nama);

strcpy(nimnya, dataMhs[i].mhs.nim);

//tampung dulu nilai-nilainya

midnya = dataMhs[i].nilai.mid;

uasnya = dataMhs[i].nilai.uas;

tugasnya = dataMhs[i].nilai.tugas;

quiznya = dataMhs[i].nilai.quiz;

nAkhirnya = dataMhs[i].nilai.nAkhir;

nHurufnya = dataMhs[i].nilai.nHuruf;

//tampilkan informasi mahasiswa yang diminta

printf("Nama Mahasiswa: %s\n", namanya);

printf("\tNIM : %s\n", nimnya);

printf("\tNilai MID : %0.1lf\n", midnya);

printf("\tNilai UAS : %0.1lf\n", uasnya);

printf("\tNilai Tugas : %0.1lf\n", tugasnya);

printf("\tNilai Quiz : %0.1lf\n", quiznya);


printf("\tNilai Akhir : %0.1lf\n", nAkhirnya);

printf("\tNilai Huruf : %c\n", nHurufnya);

printf("========================================\n");

double hitungAkhir(double m, double u, double t, double q){

double nAkhirnya;

nAkhirnya = m * MID + u * UAS + t * TGS + q * QSZ;

return nAkhirnya;

char konversiHuruf(double na){

char nHurufnya;

//tentukan nilai hurufnya

if((na >= 81.0) && (na<= 100.0))

nHurufnya = 'A';

else if(na >= 76.0)

nHurufnya = 'B';

else if(na >= 56.0)

nHurufnya = 'C';

else if(na >= 45.0)

nHurufnya = 'D';

else nHurufnya = 'E';


return nHurufnya; //kirim hasilnya sebagai nilai balik

void cariMhs(){

char nimnya[4];

int posisi;

//cek dulu datanya

if(!strcmp(dataMhs[0].mhs.nim, "")){

printf("\nData masih Kosong... Tekan enter... ");

else{

printf("Ketik NIM yang dicari: ");

gets(nimnya); fflush(stdin);

posisi = cariData(nimnya);

if(posisi == -999){

printf("\nData tidak ditemukan... Tekan enter...");

getch();

else{

printf("\nData ditemukan\n");

//tampilkan

infoNilai(posisi);

}
int cariData(char nimnya[]){

int i, posisi;

//cari nim tersebut di array nim

for(i=0;i<N;i++){

if(!strcmp(nimnya, dataMhs[i].mhs.nim)){

posisi = i;

break;

else {

posisi = -999; //nilai ini menunjukkan data tdk ditemukan

return posisi; //posisi data dikirim sebagai nilai balik

void lihatJuara(){

int i;

printf("\nPara Juara dengan Nilai Tertinggi\n");

printf("========================================\n");

//cek dulu keberadaan datanya

if(dataMhs[0].nilai.nAkhir == 0.0){

printf("\nData masih kosong... tekan enter...");

getch();
}

else{

//urutkan dulu datanya

urutkan();

for(i=0;i<3;i++){

printf("Juara ke-%d\n", i+1);

infoNilai(i);

void urutkan() { //metode selection sort

int indexMaks,i,j;

DATAMHS temp; //variabel sementara berupa struct DATAMHS

//loop untuk seluruh data

for(i = 0; i < N-1; i++) {

// elemen sekarang yang dianggap nilai maksimum

indexMaks = i;

//periksa nilai akhir terbesar

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

if(dataMhs[j].nilai.nAkhir > dataMhs[indexMaks].nilai.nAkhir) {

indexMaks = j;

}
if(indexMaks != i) { //kalau posisinya bukan posisi awal

// pertukarkan posisi data

temp = dataMhs[indexMaks];

dataMhs[indexMaks] = dataMhs[i];

dataMhs[i] = temp;

void rekapNilai(){

printf("\nRekapitulasi Nilai Mahasiswa\n");

printf("====================================\n");

//cek dulu apakah datanya ada?

if(dataMhs[0].nilai.nAkhir == 0.0){

printf("\nData masih kosong... Tekan enter...");

getch();

else{

rekapMid();

rekapUas();

rekapTugas();

rekapQuiz();

rekapAkhir();

rekapHuruf();

}
}

void rekapMid(){

double rerata = 0.0;

double jumlah = 0.0;

int i;

for(i=0;i<N;i++){

jumlah += dataMhs[i].nilai.mid;

rerata = jumlah/N;

printf("\nRata-rata nilai MID : %0.1lf\n", rerata);

void rekapUas(){

double rerata = 0.0;

double jumlah = 0.0;

int i;

for(i=0;i<N;i++){

jumlah += dataMhs[i].nilai.uas;

rerata = jumlah/N;

printf("\nRata-rata nilai UAS : %0.1lf\n", rerata);

}
void rekapTugas(){

double rerata = 0.0;

double jumlah = 0.0;

int i;

for(i=0;i<N;i++){

jumlah += dataMhs[i].nilai.tugas;

rerata = jumlah/N;

printf("\nRata-rata nilai Tugas: %0.1lf\n", rerata);

void rekapQuiz(){

double rerata = 0.0;

double jumlah = 0.0;

int i;

for(i=0;i<N;i++){

jumlah += dataMhs[i].nilai.quiz;

rerata = jumlah/N;

printf("\nRata-rata nilai Quis : %0.1lf\n", rerata);

}
void rekapAkhir(){

double rerata = 0.0;

double jumlah = 0.0;

int i;

for(i=0;i<N;i++){

jumlah += dataMhs[i].nilai.nAkhir;

rerata = jumlah/N;

printf("\nRata-rata nilai Akhir: %0.1lf\n", rerata);

void rekapHuruf(){

int hurufA=0, hurufB=0, hurufC=0, hurufD=0, hurufE=0;

int i;

//hitung yang memperoleh nilai A

for(i=0;i<N;i++){

if(dataMhs[i].nilai.nHuruf == 'A'){

hurufA += 1;

printf("\nMemperoleh nilai A: %d Orang\n", hurufA);

//hitung yang memperoleh nilai B

for(i=0;i<N;i++){
if(dataMhs[i].nilai.nHuruf == 'B'){

hurufB += 1;

printf("\nMemperoleh nilai B: %d Orang\n", hurufB);

//hitung yang memperoleh nilai C

for(i=0;i<N;i++){

if(dataMhs[i].nilai.nHuruf == 'C'){

hurufC += 1;

printf("\nMemperoleh nilai C: %d Orang\n", hurufC);

//hitung yang memperoleh nilai D

for(i=0;i<N;i++){

if(dataMhs[i].nilai.nHuruf == 'D'){

hurufD += 1;

printf("\nMemperoleh nilai D: %d Orang\n", hurufD);

//hitung yang memperoleh nilai E

for(i=0;i<N;i++){

if(dataMhs[i].nilai.nHuruf == 'E'){

hurufE += 1;

}
printf("\nMemperoleh nilai E: %d Orang\n", hurufE);

Contoh hasil eksekusi program projek.cpp :

E. Aktivitas Pembelajaran
1. Mempelajari Modul Bahan Ajar
2. Mencari Bahan yang relevan
3. Diskusi
4. Latihan Mandiri
5. Mengerjakan tugas

F. Rangkuman
Membuat program aplikasi merupakan kegiatan pemecahan masalah tentang suatu persoalan
dengan solusi program komputer. Oleh karena itu memerlukan pemahaman dan analisis yang
komprehensif terhadap persoalan yang dihadapi.

Beberapa langkah yang hendaknya doilakukan programmer meliputi:

1. Perlu mempelajari domain persoalan yang akan diselesaikan melalui riset atau kajian
mendalam;
2. Lakukan disain dari konstruksi program dengan menerapkan konsep devide and conquer atau
top-down approach;
3. Lakukan analisis kebutuhan setiap elemen program, baik kebutuhan fungsi, kebutuhan
struktur data, kebutuhan variabel, kebutuhan konstanta dan bahkan algoritma dari program
yagn akan dibuat.
4. Lakukan koding dengan memilih bahasa yang menunjang keperluan implementasi program.

G. Tugas
Tugas berikut ini harus dilakukan mandiri, walaupun dapat berdiskusi bersama teman Anda.

Buatlah penyelesaian tugas ini dengan terlebih dahulu melakukan analisis kebutuhan untuk
semua hal yang diperlukan dalam memnyusun program. Lengkapi juga jawaban Anda dengan
rancangan konstruksi modular program dengan menerapkan konsep devide and conquer atau
top -down analysis.

Selamat mengerjakan tugas.

1. Buatlah sebuah program yang dapat digunakan untuk mengelola hasil perlombaan bermain
layangan. Program harus memiliki menu pilihan, seperti entri data, pencarian data,
penentuan juara, dan lainnya. Perlu diingat bahwa penilaian lomba ditentukan oleh tinggi
layangan peserta yang bersangkutan, tetapi nilai ini tidak diinputkan, melainkan dihitung
oleh program. Data yang perlu diinputkan meliputi data identitas peserta dan data
pertandingan berupa panjang tali yang terulur serta sudut elevasi tali dengan tanah. (ingat,
bagaimana menghitung tinggi berdasarkan dua komponen ini).

2. Buatlah program yang dapat digunakan untuk mengelola hasil pertandingan memanah dari
sejumlah peserta pertandingan. Setiap peserta memiliki kesempatan melakukan panahan
sebanyak 3 kali memanah. Setiap kali memanah dinilai dengan ketentuan sebagai berikut:
 Sasaran memanah terdiri dari suatu bidang yang diberi nomor 1 hingga 10. jika
mengenai sasaran nomor 1, maka nilainya adalah 100, jika mengenai nommor 2, maka
nilai 90, demikian seterusnya hingga jika mengenai nommor 10 maka nilainya adalah
10. apabila atidak mengenai salah satu nomor, maka akan diberi nilai 0 (nol).
 Nilai total diperoleh dari akumulasi nilai setiap kali kesempatan memanah dan ini
menentukan penilaian juara memanah.
 Program harus dilengkapi dengan menu pilihan, seperti, entri data, cari peserta tertentu,
daftar hasil pertandingan dan daftar juara pertandingan.

H. Daftar Rujukan
1. Rinaldi Munir. (2016). Algoritma dan Pemrograman dalam Bahasa Pascal, C dan C++. Bandung:
Informatika.
2. Murali Chemutury. (2019). Computer programming for beginners-a step-by-step guide. CRC Press.
3. https://www.tutorialspoint.com/cprogramming
4. https://www.javatpoint.com/c-programming-language-tutorial

Anda mungkin juga menyukai