Anda di halaman 1dari 58

LAPORAN PRAKTIKUM 10

KONSEP PEMROGRAMAN
Responsi

Disusun oleh
Wahyu Misbah Assudur
(M0519082)
Asisten:
1. IMANUEL BUDI KURNIAWAN (M0518024)
2. RIFQI EKA HARDIANTO (M0516046)
PROGRAM STUDI INFORMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN
ALAM
UNIVERSITAS SEBELAS MARET
Selasa 20 Desember 2019
Program to process text file
Analisis program

Penjelasan
1. Pada awal program di jalankan oleh compiler maka akan ada tampilan menu
seperti :
1) Tambah data
2) Tampilkan data
3) Tampilkan data mahasiswa Nim Genap
4) Tampilkan data mahasiswa Nim Ganjil
5) Tampilkan data mahasiswa laki-laki
6) Tampilkan data mahasiswa perempuan
7) Keluar
2. Kemudian user memilih misal nomor 1 maka user akan menuliskan data siswa
dari file teks misalnya:
1) Contoh mahasiswa laki-laki
a) Nama : Niko Putra Pamungkas
b) Nim: M0519064
c) Alamat: Jakarta
d) Gender: L
2) Contoh mahasiswa perempuan
a) Nama: Ubbe Anggita Nugrahenny
b) Nim: M0619082
c) Alamat:-
d) Gender: P

3. Setelah itu akan di kasih tampilan menu seperti nomor 1 hanya saja tampilan
menu akan terdiri dari:
i. Tambah data
ii. Tampilkan data
iii. Tampilkan data mahasiswa Nim Genap
iv. Tampilkan data mahasiswa Nim Ganjil
v. Tampilkan data mahasiswa laki-laki
vi. Tampilkan data mahasiswa perempuan
vii. Keluar
4. Kemudian untuk memeriksa apakah program dapat memfilter maka user
memilih nomor 5 akan muncul seperti ini
5. Kemudian user ingin melihat data mahasiswa perempuan dapat memasukkan
pilihan nomor 6 sehingga menampilkan data mahasiswa perempuan
6. Setelah itu user akan menjalankan program untuk menampilkan nim genap atau
ganjil melalui data mahasiswa yang diisikan oleh user.
7. Akhirnya data data tersebut mengelompok sesuai perintah user yang dijalankan
oleh program
Analisis source kode
IF
Operator pernyataan yang berfungsi untuk mengecek pernyataan yang di masukan atau
membandingkan pernyataan dan jika nilai yang ada didalam pernyataan tersebut sesuai
atau sama dengan syarat maka program yang ada didalam fungsi if akan dijalankan
jika tidak sesuai maka akan tidak dijalankan.
Else
berfungsi untuk menerima nilai jika pernyataan if yang dibuat tidak memenuhi
persyaratan dari program yang dibuat atau bisa dikatakan else adalah fungsi yang
menerima selain dari persyaratan if tetapi dengan syarat bahwa program if yang dibuat
tidak memenuhi syarat maka fungsi else dapat berjalan.
If dalam if
Dalam fungsi if kita bisa saja menambahkan fungsi pernyataan lagi atau fungsi lainnya
yang tak ada batasannya seperti yang diketui bahwa fungsi pernyataan if untuk
membuat persyaratan untuk dapat menjalankan fungsi tertentu begitu juga kita dapat
membuat sebuah fungsi yang memiliki lebih dari satu syarat atau bisa dikatakan syarat
didalam syarat.
While
Salah satu pernyataan yang berfungsi untuk mengulangi
pengeksekusian substatement yang dilakukan ketika memiliki nilai benar
pada conditional expression.
#include berfungsi untuk mengimpor fungsi-fungsi yang sudah didefinisikan
pada header file. Header file adalah file yang berisi definisi fungsi yang sudah dibuat.
Tujuannya agar bisa digunakan pada program C yang lainnya. File ini berekstensi .h,
contoh: stdio.h.

fprintf()
digunakan untuk mencetak file yang sedang di proses ke dalam printer. Selain itu juga
dapat digunakan untuk menyimpan file dalam keadaaan diformat.
fgets()
digunakan untuk membaca string dari file sampai ditemukannya karakter baris baru
‘\n’ atau setelah (n-1) karakter, dengan n adalah panjang maks string yang dibaca.
fgetc()

digunakan untuk membaca sebuah karakter yang ada pada file file. Keluaran fungsi ini

berupa nilai int dari sebuah karakter yang dibaca dari file.

fclose()

digunakan untuk menutup file yang sudah tidak diproses lagi. Hal ini perlu jika

melakukan pemrosesan file yang jumlahnya lebih dari satu sedangkan terdapat

keterbatasan jumlah file yang dapat bekerja serentak.

fopen()

digunakan untuk mengaktifkan file sebelum file tersebut dapat diakses(dibaca atau

ditulis).
strcpy()

Berfungsi untuk menyalin String.

Free()
fungsi ini untuk menghindari adanya pemborosan memori atau terjadi
kebocoran memori ( memori leak ) maka harus melakukan dealokasi
terhadap ruang-ruang memori yang sebelumnya dialokasikan
gets()
Fungsi ini memiliki kegunaan sebagai input data pada program, namun fungsi ini
hanya dapat melakukan input data yang berbasis karakter sehingga data - data yang
menggunakan numerik tidak bisa diselesaikan dengan fungsi ini.
Printf()
Fungsi printf() merupakan fungsi untuk menampilkan output ke layar komputer.
Fungsi ini terdapat pada library stdio.h.
Scanf()
fungsi untuk mengambil input dari keyboard. Fungsi ini memiliki format seperti
fungsi printf().

%c untuk menampilkan karakter

%s untuk menampilkan teks (string)

%d, %i untuk menampilkan bilangan desimal

%f untuk menampilkan bilangan pecahan

%o untuk menampilkan bilangan oktal

%x untuk menampilkan bilangan heksadesimal

\t untuk membuat tabs


fflush()
digunakan untuk menulis data yang belum tertulis dari buffer ke
perangkat output (seperti layar). Sementara untuk input streams, adalah
tidak terdefinisikan atau tidak diketahui.
Getchar()

Berfungsi untuk mengosongkan karakter-karakter yang tersimpan di


dalam buffer sampai ketemu karakter newline (‘\n’).
Source code

#include <stdio.h>

#include <string.h>

#include <stdbool.h>

#include <stdlib.h>

int append(){

FILE *filepointer;

char NIM[10], nama[50], gender[2], alamat[100];

printf("Nama\t: ");

gets(nama);

printf("NIM\t: ");

gets(NIM);

printf("Gender(L/P)\t: ");

gets(gender);
printf("Alamat\t:");

gets(alamat);

//fgets(alamat, 50, stdin);

filepointer = fopen("data_mhs.csv", "a");

if (filepointer == NULL)

printf("Failed to open file");

}else

//fputs("Nama : ", filepointer);

fputs(nama, filepointer);

fputs(";", filepointer);

//fputs("NIM : ", filepointer);

fputs(NIM, filepointer);

fputs(";", filepointer);

//fputs("Gender : ", filepointer);


fputs(gender, filepointer);

fputs(";", filepointer);

//fputs("Alamat : ", filepointer);

fputs(alamat, filepointer);

fputs("\n", filepointer);

//fputs("---------------------------------------------------------------\n",
filepointer);

fclose(filepointer);

int show_data(){

FILE *filepointer;

char dataToBeRead[1024];

int row_count = 0;

int field_count = 0;
filepointer = fopen("data_mhs.csv", "r");

if (filepointer == NULL)

printf("Failed to open data_mhs.txt");

}else

while (fgets(dataToBeRead, 1024, filepointer))

field_count = 0;

row_count++;

//printf("%s", dataToBeRead);

char *field = strtok(dataToBeRead, ";");

while (field)

if (field_count == 0)

printf("Nama\t:");

}
if (field_count == 1)

printf("NIM\t:");

if (field_count == 2)

printf("Gender\t:");

if (field_count == 3)

printf("Alamat\t:");

printf("%s\n", field);

field = strtok(NULL, ";");

field_count++;
}

printf("\n");

fclose(filepointer);

int show_even_nim_data(){

FILE *filepointer;

char dataToBeRead[1024];

int row_count = 0;

int field_count = 0;

filepointer = fopen("data_mhs.csv", "r");

if (filepointer == NULL)

printf("Failed to open data_mhs.txt");


}else

while (fgets(dataToBeRead, 1024, filepointer))

field_count = 0;

row_count++;

//printf("%s", dataToBeRead);

char *field = strtok(dataToBeRead, ";");

while (field != NULL)

char nama_buff[1024], NIM_buff[1024], NIM_buff_temp[1024],


gender_buff[1024], alamat_buff[1024];

int check_nim;

if (field_count == 0)

strcpy(nama_buff, field);

if (field_count == 1)
{

strcpy(NIM_buff, field);

strcpy(NIM_buff_temp, field);

//printf("Debug %s\n", NIM_buff_temp);

for (int i = 0; i < NIM_buff_temp[i] != '\0'; i++)

while (((NIM_buff_temp[i] >= 'a' &&


NIM_buff_temp[i] <= 'z') || (NIM_buff_temp[i] >= 'A' && NIM_buff_temp[i] <= 'Z')
|| NIM_buff_temp[i] == '\0')) {

for (int j = i; NIM_buff_temp[j] != '\0'; ++j) {

NIM_buff_temp[j] = NIM_buff_temp[j + 1];

//NIM_buff_temp[j] = '\0';

check_nim = atoi(NIM_buff_temp);

//printf("Debug %d\n", check_nim);

}
if (field_count == 2)

strcpy(gender_buff, field);

if (field_count == 3)

strcpy(alamat_buff, field);

field = strtok(NULL, ";");

//printf("Debug %s\n", field);

field_count++;

if (field_count == 4)

if (check_nim%2 != 0)

continue;
}

printf("Nama\t: ");

printf("%s\n", &nama_buff);

printf("NIM\t: ");

printf("%s\n", &NIM_buff);

printf("Gender\t: ");

printf("%s\n", &gender_buff);

printf("Alamat\t: ");

printf("%s", &alamat_buff);

printf("\n");

fclose(filepointer);

}
}

int show_odd_nim_data(){

FILE *filepointer;

char dataToBeRead[1024];

int row_count = 0;

int field_count = 0;

filepointer = fopen("data_mhs.csv", "r");

if (filepointer == NULL)

printf("Failed to open data_mhs.txt");

}else

while (fgets(dataToBeRead, 1024, filepointer))

field_count = 0;

row_count++;
//printf("%s", dataToBeRead);

char *field = strtok(dataToBeRead, ";");

while (field != NULL)

char nama_buff[1024], NIM_buff[1024], NIM_buff_temp[1024],


gender_buff[1024], alamat_buff[1024];

int check_nim;

if (field_count == 0)

strcpy(nama_buff, field);

if (field_count == 1)

strcpy(NIM_buff, field);

strcpy(NIM_buff_temp, field);

//printf("Debug %s\n", NIM_buff_temp);

for (int i = 0; i < NIM_buff_temp[i] != '\0'; i++)

{
while (((NIM_buff_temp[i] >= 'a' &&
NIM_buff_temp[i] <= 'z') || (NIM_buff_temp[i] >= 'A' && NIM_buff_temp[i] <= 'Z')
|| NIM_buff_temp[i] == '\0')) {

for (int j = i; NIM_buff_temp[j] != '\0'; ++j) {

NIM_buff_temp[j] = NIM_buff_temp[j + 1];

//NIM_buff_temp[j] = '\0';

check_nim = atoi(NIM_buff_temp);

// printf("Debug %d\n", check_nim);

if (field_count == 2)

strcpy(gender_buff, field);

if (field_count == 3)
{

strcpy(alamat_buff, field);

field = strtok(NULL, ";");

//printf("Debug %s\n", field);

field_count++;

if (field_count == 4)

if (check_nim%2 == 0)

continue;

printf("Nama\t: ");

printf("%s\n", &nama_buff);

printf("NIM\t: ");
printf("%s\n", &NIM_buff);

printf("Gender\t: ");

printf("%s\n", &gender_buff);

printf("Alamat\t: ");

printf("%s", &alamat_buff);

printf("\n");

fclose(filepointer);

int show_male_data(){

FILE *filepointer;

char dataToBeRead[1024];
int row_count = 0;

int field_count = 0;

filepointer = fopen("data_mhs.csv", "r");

if (filepointer == NULL)

printf("Failed to open data_mhs.txt");

}else

while (fgets(dataToBeRead, 1024, filepointer))

field_count = 0;

row_count++;

//printf("%s", dataToBeRead);

char *field = strtok(dataToBeRead, ";");

while (field != NULL)

char nama_buff[1024], NIM_buff[1024], gender_buff[1024],


alamat_buff[1024];
if (field_count == 0)

strcpy(nama_buff, field);

if (field_count == 1)

strcpy(NIM_buff, field);

if (field_count == 2)

strcpy(gender_buff, field);

if (field_count == 3)

{
strcpy(alamat_buff, field);

field = strtok(NULL, ";");

//printf("Debug %s\n", field);

field_count++;

if (field_count == 4)

char gender_buff_temp = gender_buff[0];

if (gender_buff_temp == 'P')

continue;

printf("Nama\t: ");

printf("%s\n", &nama_buff);

printf("NIM\t: ");
printf("%s\n", &NIM_buff);

printf("Gender\t: ");

printf("%s\n", &gender_buff);

printf("Alamat\t: ");

printf("%s", &alamat_buff);

printf("\n");

fclose(filepointer);

int show_female_data(){

FILE *filepointer;

char dataToBeRead[1024];
int row_count = 0;

int field_count = 0;

filepointer = fopen("data_mhs.csv", "r");

if (filepointer == NULL)

printf("Failed to open data_mhs.txt");

}else

while (fgets(dataToBeRead, 1024, filepointer))

field_count = 0;

row_count++;

//printf("%s", dataToBeRead);

char *field = strtok(dataToBeRead, ";");

while (field != NULL)

char nama_buff[1024], NIM_buff[1024], gender_buff[1024],


alamat_buff[1024];
if (field_count == 0)

strcpy(nama_buff, field);

if (field_count == 1)

strcpy(NIM_buff, field);

if (field_count == 2)

strcpy(gender_buff, field);

if (field_count == 3)

{
strcpy(alamat_buff, field);

field = strtok(NULL, ";");

//printf("Debug %s\n", field);

field_count++;

if (field_count == 4)

char gender_buff_temp = gender_buff[0];

if (gender_buff_temp == 'L')

continue;

printf("Nama\t: ");

printf("%s\n", &nama_buff);

printf("NIM\t: ");
printf("%s\n", &NIM_buff);

printf("Gender\t: ");

printf("%s\n", &gender_buff);

printf("Alamat\t: ");

printf("%s", &alamat_buff);

printf("\n");

fclose(filepointer);

int main(){

bool condition = true;

char yesno[2];

int opt;
//menu

while(opt != 7){

printf("Menu\n");

printf("1. Tambah Data\n");

printf("2. Tampilkan Data\n");

printf("3. Tampilkan Data Mahasiswa NIM genap\n");

printf("4. Tampilkan Data Mahasiswa NIM ganjil\n");

printf("5. Tampilkan Data Mahasiswa Laki-laki\n");

printf("6. Tampilkan Data Mahasiswa Perempuan\n");

printf("7. Keluar\n");

printf("Masukkan Piliham : ");

scanf("%d", &opt);

if (opt == 1)

condition = true;

while (condition)

{
fflush(stdin);

append();

printf("Menambah Data Lagi (y/n) : ");

gets(yesno);

if (*yesno == 'n' || *yesno == 'N')

condition = false;

}else if (opt == 2)

printf("\n");

show_data();

}else if (opt == 3)

printf("\n");

show_even_nim_data();

}else if (opt == 4)

{
printf("\n");

show_odd_nim_data();

}else if (opt == 5)

printf("\n");

show_male_data();

}else if (opt == 6)

printf("\n");

show_female_data();

}
Lampiran
Queue

Analisis kerja program

Antrean atau queue adalah operasi penyisipan (insertion) hanya diperbolehkan pada
salah satu sisi, yang disebut sisi belakang (REAR), dan operasi penghapusan
(deletion) hanya diperbolehkan pada sisi lainnya, yang disebut sisi depan (FRONT),
dari list. pada antrian prinsip yang digunakan adalah FIFO (Fist In Fist Out) yang
aartinya Elemen yang pertama masuk ke antrian akan keluar
pertama kalinya . Sebagai contoh , antrean (X1, X2, X3,...,XN). Kita notasikan
bagian depan dari antrean X sebagai FRONT(X) dan bagian belakang sebagai
REAR(X). Jadi untuk antrean X = [X1, X2, X3 …, XN] : FRONT(X) = X1 dan
REAR(X) = XN

Kita menggunakan notasi NOEL(X) untuk menyatakan jumlah elemen di dalam


antrean X. NOEL(X) mempunyai harga integer. Untuk antrean X = [X1,X2,X3…,
XN], maka NOEL(X) = N.

Analisis source code


Cout

Fungsi cout, bertujuan untuk menampilkan pesan ke standar output,biasanya monitor.


Fungsi ini merupakan fungsi khas pada C++.

Cin

Fungsi digunakan untuk memasukkan data dari standar input, biasanya


keyboard lalu disimpan dalam suatu variabel.

cin >> nama;

Menyatakan bahwa karakter yang diketikkan pada keyboard akan dibaca dan
disimpan sebagai variabel nama.

IF
Operator pernyataan yang berfungsi untuk mengecek pernyataan yang di masukan atau
membandingkan pernyataan dan jika nilai yang ada didalam pernyataan tersebut sesuai
atau sama dengan syarat maka program yang ada didalam fungsi if akan dijalankan
jika tidak sesuai maka akan tidak dijalankan.
Else
berfungsi untuk menerima nilai jika pernyataan if yang dibuat tidak memenuhi
persyaratan dari program yang dibuat atau bisa dikatakan else adalah fungsi yang
menerima selain dari persyaratan if tetapi dengan syarat bahwa program if yang dibuat
tidak memenuhi syarat maka fungsi else dapat berjalan.
Else if
Didalam fungsi pernyataan if ada juga fungsi tambahan else if (jika tidak). else if
berfungsi untuk membuat fungsi lain seperti fungsi if seperti pernyataan tambahan atau
fungsi pernyataan kedua jika fungsi if tidak memenuhi syarat. else if biasanya
digunakan untuk membuat program yang membutuhkan persyaratan tertentu dan
berbeda beda
If dalam if
Dalam fungsi if kita bisa saja menambahkan fungsi pernyataan lagi atau fungsi lainnya
yang tak ada batasannya seperti yang diketui bahwa fungsi pernyataan if untuk
membuat persyaratan untuk dapat menjalankan fungsi tertentu begitu juga kita dapat
membuat sebuah fungsi yang memiliki lebih dari satu syarat atau bisa dikatakan syarat
didalam syarat.
While
Salah satu pernyataan yang berfungsi untuk mengulangi
pengeksekusian substatement yang dilakukan ketika memiliki nilai benar
pada conditional expression.
 using adalah deklarasi arahan / panggilan / pemberitahukan kepada kompiler
untuk penggunaan deklarasi namespace dan anggota namespace.
 namespace adalah penyedia metode untuk mencegah komflik nama dalam
proyek-proyek besar. Simbol pendeklarasian di dalam blok namespace
ditempatkan di lingkup bernama yang akan mencegah mereka pada keliruan
pengenalan pada scope yang lainnya. Jika pendeklarasiannya seperti diatas,
itu berfungsi untuk memanggil namespace yang telah dibuat.
 std adalah nama namespace tersebut yang sudah tersedia dan tidak perlu
dibuat ulang menggunakan fungsi namespace, cukup dipanggil. Std
merupakan wadah urutan yang merangkum ukuran data dan array dinamis. Di
dalam std terdapat halnya seperti cout, cin, endl dan lain-lain.
Void pop
Operasi pop yaitu operasi mengambil sebuah elemen data pada urutasn terakhir dan
menghapus elemen tersebut dari stack.

Anda mungkin juga menyukai