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.
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.
1. Memahami Permasalahan
Kasus penilaian suatu mata kuliah
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.
PENILAIAN
judul MENU
Entri Mhs Entri Nilai Daftar mhs Daftar nilai Cari Mhs Juara rekapitulasi
mmPENIL mmPENILAI
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.
double mid;
double uas;
double tugas;
double quiz;
} NILAI;
//kedua tipe MHS dan NILAI digunakan untuk tipe bentukan baru
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:
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:
Entri Mahasiswa
ENtri Nilai
MENU PILIHAN
- Cari Data
- Ubah Data
- Rekapitulasi Nilai:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
double mid;
double uas;
double tugas;
double quiz;
} NILAI;
//kedua tipe MHS dan NILAI digunakan untuk tipe bentukan baru
MHS mhs;
NILAI nilai;
} DATAMHS;
void judul();
void menu();
void bacaMhs();
void bacaNilai();
void daftarMhs();
void daftarNilai();
void cariMhs();
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:
void main(){
judul();
do {
menu();
jawab = getche();
}while(toupper(jawab)=='Y');
printf("\nTerima kasih...");
getch();
void judul(){
printf("===================================================\n");
printf("Programmer: Antu\n");
printf("===================================================\n");
getch();
}
void menu(){
int pilihan;
printf("\nMENU PILIHAN\n");
printf("===================================\n");
printf("0. Keluar\n");
printf("===================================\n");
switch(pilihan){
getch();
exit(1);
case 1: bacaMhs();
printf("\nTekan enter untuk kembali ke Manu Pilihan... ");
getch();
menu();
break;
case 2: bacaNilai();
getch();
menu();
break;
case 3: daftarMhs();
getch();
menu();
break;
case 4: daftarNilai();
getch();
menu();
break;
case 5: cariMhs();
getch();
menu();
break;
case 6: lihatJuara();
printf("\nTekan enter untuk kembali ke Manu Pilihan... ");
getch();
menu();
break;
case 7: rekapNilai();
getch();
menu();
getch();
menu();
void bacaMhs(){
printf("========================================\n");
for(i=0;i<N;i++){
strcpy(dataMhs[i].mhs.nim, nimnya);
void bacaNilai(){
char nHurufnya;
int i;
printf("========================================\n");
if(!strcmp(dataMhs[0].mhs.nim, "")){
getch();
else{
for(i=0;i<N;i++){
strcpy(namanya, dataMhs[i].mhs.nama);
strcpy(nimnya, dataMhs[i].mhs.nim);
printf("NIM : %s\n",nimnya);
scanf("%lf",&midnya); fflush(stdin);
scanf("%lf",&uasnya); fflush(stdin);
scanf("%lf",&tugasnya); fflush(stdin);
scanf("%lf",&quiznya); fflush(stdin);
dataMhs[i].nilai.mid = midnya;
dataMhs[i].nilai.uas = uasnya;
dataMhs[i].nilai.tugas = tugasnya;
dataMhs[i].nilai.quiz = quiznya;
nHurufnya = konversiHuruf(nAkhirnya);
dataMhs[i].nilai.nAkhir = nAkhirnya;
dataMhs[i].nilai.nHuruf = nHurufnya;
printf("\n");
void daftarMhs(){
int i;
printf("=========================================\n");
if(!strcmp(dataMhs[0].mhs.nim,"")){
getch();
else{
for(i=0;i<N;i++){
infoMhs(i);
strcpy(namanya, dataMhs[i].mhs.nama);
strcpy(nimnya, dataMhs[i].mhs.nim);
printf("========================================\n");
void daftarNilai(){
int i;
printf("=========================================\n");
if(dataMhs[i].nilai.nAkhir == 0.0){
getch();
else{
for(i=0;i<N;i++){
infoNilai(i);
}
}
char nHurufnya;
strcpy(namanya, dataMhs[i].mhs.nama);
strcpy(nimnya, dataMhs[i].mhs.nim);
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;
printf("========================================\n");
double nAkhirnya;
return nAkhirnya;
char nHurufnya;
nHurufnya = 'A';
nHurufnya = 'B';
nHurufnya = 'C';
nHurufnya = 'D';
void cariMhs(){
char nimnya[4];
int posisi;
if(!strcmp(dataMhs[0].mhs.nim, "")){
else{
gets(nimnya); fflush(stdin);
posisi = cariData(nimnya);
if(posisi == -999){
getch();
else{
printf("\nData ditemukan\n");
//tampilkan
infoNilai(posisi);
}
int cariData(char nimnya[]){
int i, posisi;
for(i=0;i<N;i++){
if(!strcmp(nimnya, dataMhs[i].mhs.nim)){
posisi = i;
break;
else {
void lihatJuara(){
int i;
printf("========================================\n");
if(dataMhs[0].nilai.nAkhir == 0.0){
getch();
}
else{
urutkan();
for(i=0;i<3;i++){
infoNilai(i);
int indexMaks,i,j;
indexMaks = i;
indexMaks = j;
}
if(indexMaks != i) { //kalau posisinya bukan posisi awal
temp = dataMhs[indexMaks];
dataMhs[indexMaks] = dataMhs[i];
dataMhs[i] = temp;
void rekapNilai(){
printf("====================================\n");
if(dataMhs[0].nilai.nAkhir == 0.0){
getch();
else{
rekapMid();
rekapUas();
rekapTugas();
rekapQuiz();
rekapAkhir();
rekapHuruf();
}
}
void rekapMid(){
int i;
for(i=0;i<N;i++){
jumlah += dataMhs[i].nilai.mid;
rerata = jumlah/N;
void rekapUas(){
int i;
for(i=0;i<N;i++){
jumlah += dataMhs[i].nilai.uas;
rerata = jumlah/N;
}
void rekapTugas(){
int i;
for(i=0;i<N;i++){
jumlah += dataMhs[i].nilai.tugas;
rerata = jumlah/N;
void rekapQuiz(){
int i;
for(i=0;i<N;i++){
jumlah += dataMhs[i].nilai.quiz;
rerata = jumlah/N;
}
void rekapAkhir(){
int i;
for(i=0;i<N;i++){
jumlah += dataMhs[i].nilai.nAkhir;
rerata = jumlah/N;
void rekapHuruf(){
int i;
for(i=0;i<N;i++){
if(dataMhs[i].nilai.nHuruf == 'A'){
hurufA += 1;
for(i=0;i<N;i++){
if(dataMhs[i].nilai.nHuruf == 'B'){
hurufB += 1;
for(i=0;i<N;i++){
if(dataMhs[i].nilai.nHuruf == 'C'){
hurufC += 1;
for(i=0;i<N;i++){
if(dataMhs[i].nilai.nHuruf == 'D'){
hurufD += 1;
for(i=0;i<N;i++){
if(dataMhs[i].nilai.nHuruf == 'E'){
hurufE += 1;
}
printf("\nMemperoleh nilai E: %d Orang\n", hurufE);
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.
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.
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