Anda di halaman 1dari 11

Tugas Kelompok ke-4

(Minggu 10 / Sesi 15)

1. Jelaskan apa yang dimaksud dengan File dan stream?


2. Apa yang terjadi bila file dibuka dengan mode ‘w+’ ternyata sudah ada datanya?
3. Jelaskan apa yang dimaksud
a. dynamic memory?
b. Macro
Serta berikan contohnya

4. Buatlah program .
Sebuah toko minuman menjual berbagai macam jenis minuman. Pemilik Toko
minuman tersebut menginginkan sebuah aplikasi yang mampu mencatat semua
transaksi yang ada sehingga memudahkan dalam me-monitoring usahanya.
Berikut aturan dalam membuat aplikasinya :

Pertama kali program dijalankan, program akan membaca file “dataminuman.txt”.


Pada data tersebut terdapat data minuman antara lain: nama minuman, size, Penyajian
dan harga.

Program memiliki 4 pilihan, yaitu:

a. Input data
b. View History
c. Delete History
d. Exit

Keterangan Pilihan tampilan

1). Jika user memilih menu Input data (tekan tombol ‘1’), maka program akan:
 Meminta inputan nama minuman. Validasikan inputan harus berupa Kopi,
Teh, Coklat atau Soda.
 Meminta inputan size. Validasikan inputan berupa Small, Medium dan
Largest
 Meminta inputan penyajian. Validasikan inputan berupa Dingin, panas atau
hangat.
 Menampilkan Detail pembelian berupa nama minuman, size, dan Harga.
Harga didapat dengan menggunakan rumus:

Harga = size x pjg karakter nama minuman x pjg karakter Penyajian x 100

Contoh:

Nama Minuman: Kopi


Size : Small

COMP6599 – Algorithm and Programming


Penyajian : Dingin
Harga : 12000

 Meminta inputan konfirmasi. Validasikan inputan harus berupa karakter ‘y’


atau ‘n’. Jika user memilih ‘y’, maka tambahkan data yang telah diinput ke
dalam data history. Jika user memilih ‘n’, maka program akan kembali ke
menu utama.

2). Jika user memilih menu View History (tekan tombol ‘2’), maka program akan
menampilkan data history penjualan yang pernah dilakukan dengan format:
No, Nama pesanan, Size, Penyajian dan Harga.

3). Jika user memilih menu Delete History (tekan tombol ‘3’), maka program
akan menampilkan list data history penjualan.
a) Meminta inputan index. Validasikan input minimal 1 dan maksimal
sebanyak jumlah data.
b) Hapus data sesuai dengan index yang diinput. Contoh: Jika user memilih
index 1, maka hapus data yang pertama.
Lalu Tampilkan pesan “Data Successfully delete..”.

4). Jika user memilih menu Exit (tekan tombol ‘4’), maka program akan menulis
data tersebut ke dalam file ”dataminuman.txt” dan program selesai dijalankan.

COMP6599 – Algorithm and Programming


Jawaban:

1. File adalah sekumpulan data yang disimpan pada media penyimpanan


seperti harddrive. Didalam C, untuk melakukan proses inout output file
diperlukan file header fstream.h didalam program.
Penggunaan operasi FILE dalam sebuah program sangat dibutuhkan dalam
pembuatan program yang sesungguhnya. Kita membutuhkan file sebagai
tempat penampung data-data selama operasi program. Jika kamu
menggunakan variabel biasa, data yang biasanya diolah program hanya
akan tersimpan sementara dalam memory dan akan hilang ketika program
close. Berbeda dengan memory, penyimpanan data berbasis file akan
tersimpan terus walaupun program telah diclose maupun komputer telah di
shutdown.
Contoh:
int main(){
FILE *in=fopen(namafile,mode);
fclose(in);
getchar();
return 0;
}
FILE *in=fopen(namafile, mode); Langkah pertama kita wajib membuka
file terlebih dahulu dengan perintah fopen. Fungsi fopen diikuti dengan 2
variabel diantaranya namafile dan mode. Nama file bebas kamu tentukan
sendiri.
Setelah dibuka, file tersebut wajib kita close dengan perintah
fclose(namavariabel). Karena diawal kita membuka file lalu
menyimpannya dalam variabel pointer “in”, maka diakhir program juga
wajib menutup file dengan fopen(in);
Pada dasarnya, operasi file terbagi 3 jenis. Read (R), Write(W), dan
Append(A). Read artinya membaca isi file, write menulis data ke file dan
append menambahkan data ke baris terakhir dalam file.

Berikut ciri-ciri File:


Penyimpanan data dalam variabel dan array bersifat sementara, data
tersebut hilang ketika suatu program berakhir.
File digunakan untuk penyimpanan data secara permanen.
File adalah kumpulan catatan
Rekaman adalah kumpulan bidang
Field adalah blok byte
Byte adalah kumpulan bit

Stream adalah suatu logika device yang menghasilkan dan menerima


informasi atau wadah yang digunakan untuk menampung output dan input
dari aliran/arus data atau file tersebut.
Berikut ciri-ciri stream:
Untuk menyimpan kunci data dari keyboard perlu disimpan di perangkat
penyimpanan sekunder sebagai file data.

COMP6599 – Algorithm and Programming


Streaming adalah urutan karakter. Semua data input dan output adalah
aliran. C melihat file sebagai aliran.
Ketika program C berjalan, ada tiga (3) aliran standar yang diaktifkan:
1. Aliran Input Standar
    Mengontrol aliran input dari keyboard
2. Aliran Output Standar
    Mengontrol aliran output ke monitor
3. Aliran Kesalahan Standar
    Mengontrol pesan kesalahan
Setiap aliran dikaitkan dengan file.
Membuka file yang memesan pointer dikembalikan ke inisiator. Pointer
menunjuk ke struktur data dengan tipe FILE yang didefinisikan di stdio.h

Stream: standard input stream – standard output stream – standard error


stream
File pointer : stdin – stdout – stderr

2. Apabila kita menggunakan mode ‘w+’ ketika data tersebut telah tersedia.
Data yang sebelumnya akan hilang
Contoh ;

Berikut adalah
syntax awal
pembuatan file

File telah tersedia

Dan berikut isi file tsb

COMP6599 – Algorithm and Programming


Sekarang kita coba menggunakan mode ‘w+’ dengan file yang telah
tersedia

Berikut syntax untuk menggunakan mode ‘w+’

Berikut hasil dari penggunaan mode ‘w+’ pada file yang telah tersedia. Isi
file sebelumnya akan menghilang dan digantikan dengan isi file yang baru.

3. A) Dynamic Memory
Alokasi memori dalam C sangat penting untuk mencapai kinerja terbaik
khususnya dalam aplikasi perangkat terintegrasi (embedded system).
Bahasa C dapat digunakan untuk menangani alokasi memori dinamis.

COMP6599 – Algorithm and Programming


Fitur dan kata kunci spesifik dapat digunakan untuk mengalokasikan data
dalam memori untuk menentukan karakteristik data seperti waktu hidup,
waktu pembuatan, ukuran, lokasi dan sebagainya.
Ada beberapa ciri dynamic memory
- Dapat ditugaskan dengan nama
- Dialokasikan saat run-time
- Disimpan di heap memory
- Dapat dialokasikan kapan saja

Terdapat empat fungsi yang digunakan untuk mengatur bagian heap yang
mengalokasikan memori secara dinamis:

- Malloc (memory allocation) digunakan untuk mengalokasikan satu


blok memori secara dinamis di memori tumpukan. Argumen
(parameter aktual) yang dikirim ke fungsi ini adalah nilai yang
menyatakan ukuran memori yang dialokasikan (dalam byte)
Sintaks: void*malloc (size_t size);
Jika alokasi berhasil, itu akan mengembalikan alamat memori dari
memori yang dialokasikan. Jika tidak (mis. Ukuran malloc yang
diusulkan lebih besar dari memori tumpukan yang ada), maka akan
mengembalikan Null.
Contoh: int*a;
a = (int *) malloc(sizeof(int));
- Calloc (contiguous allocation) digunakan untuk mengalokasikan
beberapa blok memori secara dinamis pada memori tumpukan, di
mana setiap elemen diberikan ukuran. Calloc menginisialisasi semua
elemen dengan nol.
Contoh: int*a;
a = (int *)
calloc(20,sizeof(int));
- Realloc (reallocate) digunakan untuk merealokasi beberapa blok
memori atau elemen secara dinamis di heap. Bisa juga dikatakan
untuk mengubah ukuran memori yang sudah dialokasi sebelumnya.
Sintaks: void *realloc(void *ptr, size_t size);
Contoh: int *a, *ptr;
a = (int *) realloc(ptr,sizeof(int));
- Free digunakan untuk melepaskan memori yang dialokasikan pada
memori tumpukan. Namun pengalokasian memori secara dinamis
tidak dilepaskan secara otomatis. Program harus melepaskan memori
yang sudah tidak digunakan menggunakan fungsi free() agar tidak
terjadi kebocoran memory (memory leak).
Sintaks: void free (void *block);

Berikut contoh penggunaan malloc () dan free():

#include <stdio.h>
#include <stdlib.h>

COMP6599 – Algorithm and Programming


int main() {

int *ptr_i;
ptr_i = (int *) malloc(sizeof (int));
*ptr_i = 10;
printf(“%d\n”, *ptr_i);
free(ptr_i);
return 0;

Contoh penggunaan calloc() :

#include <stdio.h>
#include <stdlib.h>

int main() {

int *ptr_i, i;
ptr_i = (int *) calloc (4, sizeof (int));
for (i = 0; i < 4; ++i) {
ptr_i[i] = i;
}

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


printf(“%d ”, ptr_i[i]);

free(ptr_i);

return 0;

Fungsi malloc() juga dapat digunakan untuk mengalokasi beberapa blok


memori seperti fungsi calloc() dengan menggunakan cara sebagai
berikut:

int *ptr_i;
ptr_i; (int *) malloc(sizeof(int)*4);

Dengan mengalikan ukuran integer dengan empat, maka akan


menghasilkan 4 blok memori seperti yang dihasilkan fungsi calloc().

Bedanya adalah, fungsi calloc() memasang setiap byte pada setiap blok
memori yang dipesan menjadi nol sedangkan fungsi malloc() tidak,
maka setiap blok di fungsi malloc() yang dialokasikan isinya adalah
undefined.

Contoh fungsi realloc():

COMP6599 – Algorithm and Programming


#include <stdio.h>
#include <stdlib.h>

int main() {

int *ptr_i, i, n;
printf(“Masukkan ukuran array yang diinginkan: ”);
scanf(“%d”, &n);

ptr_i = (int *) malloc(sizeof (int) * n);


printf(“Alamat memori yang dipesan\n”);

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

printf(“%p\n”, &ptr_i[i]);

printf(“\n”);
printf(“Masukkan ukuran baru array yang diinginkan:”);
scanf(“%d”, &n);
ptr_i = realloc(ptr_i, n);

printf(“Alamat memori baru yang dipesan\n”);

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

printf(“%p\n”, &ptr_i[i]);

return 0;

B) Macro
Preprocessor adalah bagian dari sebuah software development tool untuk bahasa
C yang bertugas untuk melakukan pengolahan source code sebelum diberikan kepada
compiler untuk diolah lebih lanjut.

Tujuan macro pada awal diperkenalkan adalah untuk membantu pemogram mengurangi
frekuensi menulis kode secara repetitif. Pada saat awal diperkenalkan macro, hanya untuk
menyingkat penulisan formula yang sederhana. Namun seiring perkembangannya, macro
akan diterjemahkan langsung sebagai bagian dari rutin pemanggil sebagai kesatuan yang
artinya sebanyak macro tersebut digunakan dalam kode, sebanyak itu juga replikasi/duplikasi
kode tersebut. Macro secara spesifik dimanfaatkan dalam proses optimasi kode.
Terdapat beberapa cirinya:
- Menggunakan #define

- Ditempatkan di awal kode

COMP6599 – Algorithm and Programming


- Cakupannya dimulai dari posisi deklarasi hingga akhir program.

- Macro tidak dikenali oleh program lain.

Misalnya, macro #define a((c)*(d)) akan mengganti setiap kemunculan a dengan nilai hasil
perkalian variable c dan d. Tanda kurung yang banyak untuk memastikan bahwa makro
dieksekusi sesuai dengan yang diinginkan, sebab ada yang disebut dengan operator
precedence, dimana urutan pengerjaan operator jika berbagai operator muncul dalam sebuah
pernyataan. Misalnya a*b+c, pada ekspresi ini, yang akan diolah terlebih dulu adalah
perkalian a dan b, kemudian hasilnya dijumlahkan dengan c.

Macro dapat mempunyai parameter (nilai input).

Macro juga digunakan sebagai fungsi seperti argument, dimana argument tidak diperiksa
untuk tipe data. Contohnya macro increment(x) yang dapat digunakan untuk x dengan tipe
data apapun.

Contoh:

#include <stdio.h>
#define INCREMENT(x) ++x
int main()
{
char *ptr = “HelloWorld”;
int x = 10;
printf(“%s”, INCREMENT(ptr));
printf(“%d”, INCREMENT(x));
return 0;

4. Berikut programnya hasil output (untuk programnya telah disediakan dalam file
zip):

COMP6599 – Algorithm and Programming


Team 4:

COMP6599 – Algorithm and Programming


1. Dewi Joanne Suhandeniputri 2301970460
2. Royhan Ramadhan Tresnavani 2301969603
3. Rizal Sidik Permana 2301969502
4. Leonardus Giovanno A.S. 2301971362
5. Abd. Rauf Jauhari Izza Mazzidan 2301970504

COMP6599 – Algorithm and Programming

Anda mungkin juga menyukai