UNIVERSITAS WIDYATAMA JURUSAN TEKNIK INFORMATIKA - FAKULTAS TEKNIK Jl. Cikutra No.204 A BAndung UJIAN TENGAH SEMESTER TA.

dokumen-dokumen yang mirip
Dasar Operasi File. Overview. Tujuan Instruksional

Sequential File. Pertemuan Konsep Record/Struktur dan Pointer Konsep File Pengelolaan File Studi Kasus

Baca Tulis File. Untuk dapat membaca atau menulis data dari/ke sebuah file maka langkah yang perlu dilakukan adalah:

Struct Lanjutan: Studi Kasus

PERTEMUAN VII FILE TEKS & FILE BINER

JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK Universitas Widyatama UJIAN TENGAH SEMESTER TA. 2009/2010

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

BAB VI. STATEMENT CONTROL

BAB IV PENGULANGAN PROSES

MODUL 5 PERULANGAN (LOOPING)

Tipe Data, Variabel, Input/Output

Pada prinsipnya operasi yang dilakukan pada file terdiri dari 3 tahapan : 1. Membuka file 2. Melakukan pemrosesan pada file 3.

# FOUR LOOPING. JAWABAN 1. #include <stdio.h> #include <conio.h> #define pi void main(){

Chapter 1 KONSEP DASAR C

PENGENALAN BAHASA C DAN C++

BAB 12 MANIPULATION FILE

MODUL I PENGENALAN IDE C++, ALGORITMA DAN PEMROGRAMAN

Struktur Program Bahasa C

BAB XII OPERASI FILE

Achmad Solichin.

Pemrograman Terstruktur. Pemrosesan File Teks dan File Biner

Object Oriented Programming (OOP)

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

PRAKTIKUM 6 PENGULANGAN PROSES 2

VARIABEL & TIPE DATA PEMROGRAMAN C++

PEMROGRAMAN BERORIENTASI OBJEK. Input / Output. Budhi Irawan, S.Si, M.T

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

ALUR PROGRAM. SELEKSI KONDISI Statement If a. Bentuk If tunggal sederhana Sintaks : if ( kondisi ) statement ;

BAHASA PEMROGRAMAN C

Tipe Data dan Operator

PERTEMUAN XI OPERASI FILE

PERTEMUAN 7 REVIEW (QUIZ)

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

BAHASA PEMROGRAMAN C LANGUAGE

IT234 - Algoritma dan Struktur Data. Ramos Somya

OPERASI FILE DASAR PEMROGRAMAN

Bahasa C-M6 By Jamilah, Skom 1

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

Algoritma dan Struktur Data. Ramos Somya

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

Struktur Bahasa C dan C++

MODUL. Perulangan (Looping) Modul Praktikum C++ Pemrograman Dasar. Semester Genap 2017/2018

Pengenalan C++ Oleh : Dewi Sartika

Informasi Umum. Misalkan soalnya seperti demikian:

BAB 2 TIPE-TIPE DATA TURBO C++

DIKTAT MATA KULIAH PEMROGRAMAN I BAB VII ARRAY

PEMROGRAMAN BERORIENTASI OBJEK. Pengulangan. Budhi Irawan, S.Si, M.T

SATUAN ACARA PERKULIAHAN (SAP)

Looping : break, continue, nested loop

IT234 - Algoritma dan Struktur Data. Ramos Somya

Hari : Rabu Pertemuan : 4 Tanggal Praktikum : 28 November 2001 Shift : 4

Algoritma dan Struktur Data. Ramos Somya

TUGAS PENDAHULUAN MODUL I PERKENALAN MIKU, COMPILER BAHASA C, DAN STANDARD INPUT-OUTPUT

TEORI KONSEP PEMPROGRAMAN 3.1

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

BAGIAN A. PILIHAN GANDA Silanglah Jawaban yang Benar Pada Lembar Jawaban. Jawaban benar bernilai 3, salah atau kosong bernilai 0.

Modul IV Pemrograman Bahasa C ( bagian I )

PRAKTIKUM 5 PENGULANGAN PROSES 1

Tutorial 08 Pertemuan 12

Hari : Rabu Pertemuan : 3 Tanggal Praktikum : Oktober 2001 Shift : 4

File & Stream. Kegunaan File : file : ini. dengan. iostream.h) suatu. stream, Jika. dapat menghubungkan. mendeklarasikan. kita.

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-7 Pencarian (Searching) 2

Struktur Data. Stack STMIK AMIKOM YOGYAKARTA. Bayu Setiaji, S.Kom

Seharusnya. if (antrian.tail==max-1) return 0;

Satuan Acara Perkuliahan

Perulangan, Percabangan, dan Studi Kasus

IT234 - Algoritma dan Struktur Data. Ramos Somya

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

STRUKTUR PEMROGRAMAN PYTHON

MODULAR (FUNGSI)

BAGIAN A. PILIHAN GANDA Silanglah jawaban yang benar pada lembar jawaban. Jawaban benar bernilai 3, salah atau kosong bernilai 0.

MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER)

Modul V Pemrograman Bahasa C ( bagian II )

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

12/29/2011. Algoritme dan Pemrograman. Bit. Bitwise operator

04. Single Linked List

A. TUJUAN PEMBELAJARAN

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA April 1, 2010 BAB 8 REKURSIF

Pendahuluan. Overview. Bobot SKS & Prasyarat. Deskripsi

Minggu ke-13 Berkas (File)

Materi Pertemuan PENGOLAHAN FILE LANJUT

BAB 2. FUNGSI INPUT OUTPUT

Pernyataan (Statement) dan Input/Output

INPUT DAN OUTPUT BAHASA C

Latihan & Kisi-kisi UTS DASAR PEMROGRAMAN

BAB VII. FUNCTION. A. Pengantar Function. #include <iostream.h> #include <conio.h> { clrscr(); // detail function

QUEUE (ANTREAN) Prinsip Antrean : FIFO (First In First Out) FCFS (First Come First Serve) Yang Tiba lebih awal Maka akan dilayani Terlebih Dahulu

Fungsi : Dasar Fungsi

Pendahuluan Pemrograman Mikrokontroler

Praktikum 4. Tumpukan (Stack)

Percabangan. Agus Priyanto, M.Kom

PENGENALAN BAHASA C. Praktikum 3

KARAKTER DAN STRING, ARRAY, STRUCT DAN REVIEW PADA BAHASA C

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

AP2B Dini Triasanti STRUKTUR PEMROGRAMAN PYTHON

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-13 Arsip (File) 2

UJIAN TENGAH SEMESTER GANJIL TAHUN STMIK AMIKOM YOGYAKARTA

// Created by Andri Andriyan // Linked List. #include <stdlib.h> #include <conio2.h> #include <stdio.h>

Praktikum Algoritma dan Struktur Data

Transkripsi:

UNIVERSITAS WIDYATAMA JURUSAN TEKNIK INFORMATIKA - FAKULTAS TEKNIK Jl. Cikutra No.204 A BAndung UJIAN TENGAH SEMESTER TA. 2008/2009 Mata Kuliah/Jurusan : Pemrograman II (Terstruktur II)/Teknik Informatika-S1 Hari/Tanggal : Selasa, 31 Maret 2009 Waktu : 90 Menit Dosen Penguji : Tim Dosen Sifat : Buka Buku Bagian I : Esai (Score Max : 80) Untuk kelas C : pilih soal nomor 1 dan no 2, sedangkan untuk kelas A, B, D dan E pilih soal nomor 1, 2 dan 3 1. Salah satu tugas programmer adalah membuat program untuk melakukan pengolahan data. Seiring dengan perkembangan kebutuhan manusia berimbas pada makin banyaknya data yang harus diolah, oleh karena itu file sangat diperlukan dalam proses pengolahan data tersebut. Jelaskan kenapa untuk pengelolaan data yang jumlahnya banyak, programmer lebih memilih menggunakan file (Score : 10) Jawab : Jika data yang banyak tersebut disimpan bukan dalam bentuk file (atau disimpan dalam memory utama yang bersifat sementara), maka pada saat program selesai atau dihentikan data tersebut akan hilang. Oleh karena itu untuk pengolahan banyak data, programmer menggunakan file, sebab data yang disimpan file bersifat permanen atau dengan kata lain tidak akan hilang jika program selesai atau dihentikan 2. Pengelolaan data dalam file tergantung dari jenis file yang dipilih oleh programmer (yang sebelumnya telah mempertimbangkan kelebihan dan kekurangan dari bentuk file yang dipilihnya). Hasil pengelolaan file biasanya berupa informasi-informasi sesuai permintaan pengguna data tersebut. Hypermaket IF-UTAMA adalah hypermarket yang dibuka oleh Profi Teknik Informatika yang memiliki cabang diseluruh Jawa Barat. Data Pendapatan dan data transaksi (Jual/Beli) di hypermarket tersebut disimpan dalam dua jenis file sebagai berikut : No_Toko Kode_Spv Pendapatan 0505001 IF-UTAMA-TI Rp. 1.000.000 0505007 IF-UTAMA-TI Rp. 2.000.000 0505212 IF-UTAMA-TI Rp. 3.000.000 0605001 IF-UTAMA-IF Rp. 10.000.000 0605007 IF-UTAMA-IF Rp. 20.000.000 File Master (Data Pendapatan) Hypermarket IF-UTAMA No_Toko Kode_Spv Pendapatan 0605212 IF-UTAMA-IF Rp. 30.000.000 1105001 IF-UTAMA-SI Rp. 1.000.000 1105007 IF-UTAMA-SI Rp. 1.500.000 1105212 IF-UTAMA-SI Rp. 2.000.000. dst File Transaksi Hypermarket IF-UTAMA Tanggal 31 Maret 2009 No_Toko Kode_Trans Jml_Trans No_Toko Kode_Trans Jml_Trans 0505001 J Rp. 1.000.000 0605313 B Rp. 30.000.000 0505001 B Rp. 2.000.000 1105007 J Rp. 500.000 0505121 B Rp. 2.000.000 1105007 B Rp. 500.000 0605007 B Rp. 20.000.000 1105211 B Rp. 2.000.000 0605212 J Rp. 3.000.000 1105212 J Rp. 2.000.000 0605212 B Rp. 30.000.000.dst Keterangan : J (Jual atau transaksi penjualan barang ke konsumen) dan B (Beli atau transaksi pembelian barang ke supllier) Berdasarkan file-file tersebut di atas anda diminta oleh hypermarket IF-UTAMA membuat program untuk keperluan : a. Menampilkan informasi total transaksi per No_Toko serta total transaksi per hari (ingat kode transaksi menentukan jumlah transaksi bernilai positif atau negatif) (Score : 20) b. File transaksi di hypermarket IF-UTAMA dibuat per hari, hal ini berdampak pada banyaknya file transaksi yang harus disimpan. Untuk mengatasi hal tersebut, gabungkan file-file transaksi yang ada menjadi satu buah file (struktur data dalam file ada kemungkinan berubah sesuai kebutuhan, selain itu jumlah file transaksi minimal 3 buah) (Score : 20) UTS-Pemrograman II Halaman : 1 dari 10

c. Pendapatan masing-masing Toko akan diperbaharui sesuai dengan jumlah transaksi yang dilakukan di toko tersebut (dalam hal ini saldo diijinkan bernilai negatif, gunakan file transaksi dari soal no 2.b) (Score : 30) d. Memisahkan data toko yang merugi pada file yang berbeda. Untuk menentukan toko tersebut rugi adalah jika PENDAPATANNYA bernilai negatif (gunakan file hasil dari soal no 2.c) (Score : 15) //Jawaban Soal UTS Pemrograman II 2008/2009 No.2 #include <stdio.h> #include <string.h> #include <stdlib.h> //optional #include <conio.h> //optional //deklarasi rekaman file typedef struct char No_Toko[8];char Kode_Spv[12];float Pendapatan;RecMaster; typedef struct char No_Toko[8];char Kode_Trans;float Jml_Trans;RecTrans; //deklarasi pointer file FILE *PointTrans, *PointMaster; void Soal_a(); void Soal_b(); void Soal_c(); void Soal_d(); void Soal_1(); int main() int Pilih; do clrscr(); printf("m E N U\n"); printf("1. Soal No.2-a Konsolidasi\n"); printf("2. Soal No.2-b Merging\n"); printf("3. Soal No.2-c Updating\n"); printf("4. Soal No.2-d Splitting\n"); printf("0. Keluar\n"); printf("masukan pilihan anda : ");scanf("%d",&pilih); switch(pilih) case 1 : Soal_a();break; case 2 : Soal_b();break; case 3 : Soal_c();break; case 4 : Soal_d();break; case 0 : printf("terima kasih...!!!\n");break; default : printf("pilihan anda salah\n");break; while(pilih!=0); //optional return 0; void Soal_a() //Gunakan PointTrans untuk membaca data dalam file Transaksi PointTrans = fopen("transaksi.txt","rt"); //deklarasi data untuk menampung nilai yang dibaca dari dalam file RecTrans RTrans; //deklarasi data untuk inisialisasi kategori dan seluruh kategori char Current_Kateg[8]; //inisialisasi key float TotalTransaksiperNoToko; //inisialisasi kategori float TotalTransaksiperHari;//inisialisasi seluruh kategori //Cek Isi File if(feof(pointtrans)) //jika file kosong, maka //tampilkan informasi bahwa file kosong printf("error File : File Kosong\n"); Solusi UTS-Pemrograman II Ver/Rev : 2 /0 Halaman : 2 dari 10

exit(1); //inisialisasi seluruh kategori TotalTransaksiperHari = 0; //baca data/record pertama fscanf(pointtrans,"%s %c //dengan bantuan PointTrans proses data dalam file dari awal sampai akhir file do strcpy(current_kateg,rtrans.no_toko); TotalTransaksiperNoToko = 0; do //proses data untuk kategori yang sama //hitung Total Transaksi untuk No_Toko yang sama if(rtrans.kode_trans == 'J') TotalTransaksiperNoToko = TotalTransaksiperNoToko + TotalTransaksiperNoToko = TotalTransaksiperNoToko - //baca data/record berikutnya fscanf(pointtrans,"%s %c while (strcmp(current_kateg,rtrans.no_toko) == 0 &&!feof(pointtrans)); //terminasi kategori - tampilkan hasilnya printf("total Transaksi No Toko : %s adalah %.2f \n",current_kateg,totaltransaksipernotoko); //proses data untuk seluruh kategori //hitung Total Transaksi per hari TotalTransaksiperHari = TotalTransaksiperHari + TotalTransaksiperNoToko; while(!feof(pointtrans)); //terminasi seluruh kategori - tampilkan hasilnya printf("total Transaksi hari ini adalah %.2f",TotalTransaksiperHari); //tutup file fclose(pointtrans); void Soal_b() FILE *PointTrans1,*PointTrans2,*PointTrans3; //Gunakan PointTrans untuk membaca data dalam file Transaksi PointTrans1 = fopen("transaksi.txt","rt"); PointTrans2 = fopen("transaksi.txt","rt"); PointTrans3 = fopen("transaksi.txt","rt"); FILE *PointTransBaru; PointTransBaru = fopen("transaksi1.txt","wt"); //deklarasi data untuk menampung nilai yang dibaca dari dalam file RecTrans RTrans1,RTrans2,RTrans3; //Cek Isi File if(feof(pointtrans1)&& feof(pointtrans2) && feof(pointtrans3)) //jika file kosong, maka //tampilkan informasi bahwa file kosong printf("error File : File Kosong\n"); exit(1); Solusi UTS-Pemrograman II Ver/Rev : 2 /0 Halaman : 3 dari 10

//baca data pertama dari masing-masing file fscanf(pointtrans1,"%s %c %f",&rtrans1.no_toko,&rtrans1.kode_trans,&rtrans1.jml_trans); fscanf(pointtrans2,"%s %c %f",&rtrans2.no_toko,&rtrans2.kode_trans,&rtrans2.jml_trans); fscanf(pointtrans3,"%s %c %f",&rtrans3.no_toko,&rtrans3.kode_trans,&rtrans3.jml_trans); //proses penggabungan printf("mulai proses penggabungan\n"); while(!feof(pointtrans1) &&!feof(pointtrans2) &&!feof(pointtrans3)) if(strcmp(rtrans1.no_toko,rtrans2.no_toko) <= 0 && strcmp(rtrans1.no_toko,rtrans3.no_toko) <= 0) %f\n",rtrans1.no_toko,rtrans1.kode_trans,rtrans1.jml_trans); fscanf(pointtrans1,"%s %c %f",&rtrans1.no_toko,&rtrans1.kode_trans,&rtrans1.jml_trans); printf("tulis dari file ke-1\n"); if (strcmp(rtrans2.no_toko,rtrans1.no_toko) <= 0 && strcmp(rtrans2.no_toko,rtrans3.no_toko) <= 0) %f\n",rtrans2.no_toko,rtrans2.kode_trans,rtrans2.jml_trans); fscanf(pointtrans2,"%s %c %f",&rtrans2.no_toko,&rtrans2.kode_trans,&rtrans2.jml_trans); printf("tulis dari file ke-2\n"); %f\n",rtrans3.no_toko,rtrans3.kode_trans,rtrans3.jml_trans); fscanf(pointtrans3,"%s %c %f",&rtrans3.no_toko,&rtrans3.kode_trans,&rtrans3.jml_trans); printf("tulis dari file ke-3\n"); while(!feof(pointtrans1)) %f\n",rtrans1.no_toko,rtrans1.kode_trans,rtrans1.jml_trans); fscanf(pointtrans1,"%s %c %f",&rtrans1.no_toko,&rtrans1.kode_trans,&rtrans1.jml_trans); printf("tulis dari file ke-1\n"); while(!feof(pointtrans2)) %f\n",rtrans2.no_toko,rtrans2.kode_trans,rtrans2.jml_trans); fscanf(pointtrans2,"%s %c %f",&rtrans2.no_toko,&rtrans2.kode_trans,&rtrans2.jml_trans); printf("tulis dari file ke-2\n"); while(!feof(pointtrans3)) %f\n",rtrans3.no_toko,rtrans3.kode_trans,rtrans3.jml_trans); fscanf(pointtrans3,"%s %c Solusi UTS-Pemrograman II Ver/Rev : 2 /0 Halaman : 4 dari 10

%f",&rtrans3.no_toko,&rtrans3.kode_trans,&rtrans3.jml_trans); printf("tulis dari file ke-3\n"); //tutup file fcloseall(); printf("proses Merging berhasil dilakukan\n"); void Soal_c() char Current_Kateg[8]; float TotalTransaksiperNoToko; //Gunakan PointTrans untuk membaca data dalam file Transaksi PointTrans = fopen("transaksi1.txt","rt"); PointMaster = fopen("master.txt","rt"); FILE *PointMasterBaru; PointMasterBaru = fopen("master1.txt","wt"); //deklarasi data untuk menampung nilai yang dibaca dari dalam file RecTrans RTrans; RecMaster RMaster,RMasterBaru; //Cek Isi File if(feof(pointtrans)&& feof(pointmaster)) //jika file kosong, maka //tampilkan informasi bahwa file kosong printf("error File : File Kosong\n"); exit(1); //baca data pertama dari masing-masing file fscanf(pointtrans,"%s %c //proses updating printf("mulai proses updating\n"); while(!feof(pointtrans) &&!feof(pointmaster)) strcpy(current_kateg,rtrans.no_toko); TotalTransaksiperNoToko = 0; do //optional //proses data untuk No_Toko yang sama if(rtrans.kode_trans == 'J') TotalTransaksiperNoToko = TotalTransaksiperNoToko + TotalTransaksiperNoToko = TotalTransaksiperNoToko - //baca data/record berikutnya fscanf(pointtrans,"%s %c while (strcmp(current_kateg,rtrans.no_toko) == 0 &&!feof(pointtrans)); //jawaban bisa mulai dari sini if(strcmp(current_kateg,rmaster.no_toko) == 0) strcpy(rmasterbaru.no_toko,current_kateg); strcpy(rmasterbaru.kode_spv,rmaster.kode_spv); RMasterBaru.Pendapatan = RMaster.Pendapatan + TotalTransaksiperNoToko; fprintf(pointmasterbaru,"%s %s Solusi UTS-Pemrograman II Ver/Rev : 2 /0 Halaman : 5 dari 10

%0f\n",RMasterBaru.No_Toko,RMasterBaru.Kode_Spv,RMasterBaru.Pendapatan); //fscanf(pointtrans,"%s %c if(strcmp(current_kateg,rmaster.no_toko) < 0) strcpy(rmasterbaru.no_toko,current_kateg); strcpy(rmasterbaru.kode_spv,"if-utama-br"); RMasterBaru.Pendapatan = TotalTransaksiperNoToko; fprintf(pointmasterbaru,"%s %s %.0f\n",RMasterBaru.No_Toko,RMasterBaru.Kode_Spv,RMasterBaru.Pendapatan); //fscanf(pointtrans,"%s %c // strcpy(rmasterbaru.no_toko,rmaster.no_toko); strcpy(rmasterbaru.kode_spv,rmaster.kode_spv); RMasterBaru.Pendapatan = RMaster.Pendapatan; fprintf(pointmasterbaru,"%s %s %.0f\n",RMasterBaru.No_Toko,RMasterBaru.Kode_Spv,RMasterBaru.Pendapatan); //fscanf(pointtrans,"%s %c while(!feof(pointtrans)) strcpy(current_kateg,rtrans.no_toko); TotalTransaksiperNoToko = 0; do //optional //proses data untuk No_Toko yang sama if(rtrans.kode_trans == 'J') TotalTransaksiperNoToko = TotalTransaksiperNoToko + TotalTransaksiperNoToko = TotalTransaksiperNoToko - //baca data/record berikutnya fscanf(pointtrans,"%s %c while (strcmp(current_kateg,rtrans.no_toko) == 0 &&!feof(pointtrans)); strcpy(rmasterbaru.no_toko,rtrans.no_toko); strcpy(rmasterbaru.kode_spv,rmaster.kode_spv); RMasterBaru.Pendapatan = RMaster.Pendapatan + TotalTransaksiperNoToko; fprintf(pointmasterbaru,"%s %s %.0f\n",RMasterBaru.No_Toko,RMasterBaru.Kode_Spv,RMasterBaru.Pendapatan); //fscanf(pointtrans,"%s %c // while(!feof(pointmaster)) Solusi UTS-Pemrograman II Ver/Rev : 2 /0 Halaman : 6 dari 10

strcpy(rmasterbaru.no_toko,rmaster.no_toko); strcpy(rmasterbaru.kode_spv,rmaster.kode_spv); RMasterBaru.Pendapatan = RMaster.Pendapatan; fprintf(pointmasterbaru,"%s %s %.0f\n",RMasterBaru.No_Toko,RMasterBaru.Kode_Spv,RMasterBaru.Pendapatan); //fscanf(pointtrans,"%s %c //tutup file fcloseall(); printf("proses Updating berhasil dilakukan\n"); void Soal_d() //Gunakan PointTrans untuk membaca data dalam file Transaksi PointMaster = fopen("master1.txt","rt"); FILE *PointMasterBaruNegatif,*PointMasterBaruPosiitif; PointMasterBaruNegatif = fopen("masternegatif.txt","wt"); PointMasterBaruPosiitif = fopen("masterpositif.txt","wt"); //deklarasi data untuk menampung nilai yang dibaca dari dalam file RecMaster RMaster; //Cek Isi File if(feof(pointmaster)) //jika file kosong, maka //tampilkan informasi bahwa file kosong printf("error File : File Kosong\n"); exit(1); //baca data pertama dari masing-masing file //proses Splitting printf("mulai proses Splitting\n"); while(!feof(pointmaster)) if(rmaster.pendapatan < 0) fprintf(pointmasterbarunegatif,"%s %s %0f\n",RMaster.No_Toko,RMaster.Kode_Spv,RMaster.Pendapatan); fprintf(pointmasterbaruposiitif,"%s %s %0f\n",RMaster.No_Toko,RMaster.Kode_Spv,RMaster.Pendapatan); //tutup file fcloseall(); printf("proses Splitting berhasil dilakukan\n"); Solusi UTS-Pemrograman II Ver/Rev : 2 /0 Halaman : 7 dari 10

3. Rekursif merupakan salah satu teknik pemrograman. Rekursif sebenarnya merupakan suatu fungsi atau prosedur yang bisa memanggil dirinya sendiri, jadi kita bisa menganggap bahwa rekursif adalah looping yang memanfaatkan fungsi atau prosedur. a. Jelaskan secara singkat kelebihan dan kekurangan proses yang menggunakan rekursif dan looping biasa (Score : 10) b. Buat fungsi/prosedur dan program pemanggilnya, untuk membentuk segi tiga Pascal dengan menggunakan rekursif, petunjuk Jika n 0 maka : C(n,0) = 1 dan C(n,n) = 1 Jika n > k >0 maka : C(n,k) = C(n-1,k)+C(n-1,k-1) (Score : 15) c. Buat fungsi/prosedur dan program pemanggilnya, untuk melakukan konversi dari bilangan desimal ke biner dengan menggunakan rekursif (petunjuk gunakan MOD dan DIV untuk proses ini, btw inget dalam C/C++ sintaksnya apa) (Score : 20) //Jawaban Soal UTS Pemrograman II 2008/2009 No.2 #include <stdio.h> #include <stdlib.h> //optional #include <conio.h> //optional int segitiga_pascal(int row, int position); void PanggilSegitigaPascal(); void PrintBinary(int &x,int &d); char buffer[33]; int index=0; int main() int Pilih; int BilDesimal; int JmlDigitBiner; do clrscr(); printf("m E N U\n"); printf("1. Soal No.3-b Segitiga Pascal Rekursif\n"); printf("2. Soal No.3-b Konversi Desimal ke Biner\n"); printf("0. Keluar\n"); printf("masukan pilihan anda : ");scanf("%d",&pilih); switch(pilih) case 1 : PanggilSegitigaPascal();break; case 2 : printf("masukan Angka Desimal : ");scanf("%d",&bildesimal); printf("masukan Jumlah Digit Biner : ");scanf("%d",&jmldigitbiner); PrintBinary(BilDesimal,JmlDigitBiner); break; case 0 : printf("terima kasih...!!!\n");break; default : printf("pilihan anda salah\n");break; while(pilih!=0); //optional return 0; int segitiga_pascal(int row, int position) if(position == 0) return 1; if(position == row) return 1; return segitiga_pascal(row-1, position) + segitiga_pascal(row-1, position-1); void PanggilSegitigaPascal() int n; printf("enter Row: ");scanf("%d",&n); Solusi UTS-Pemrograman II Ver/Rev : 2 /0 Halaman : 8 dari 10

int tengah = (2 * n)/2; //tampilkan segitiga pascal for (int i = 0; i <= n; ++i) //mencetak spasi for (int k = 0;k < tengah;k++) printf(" "); //mencetak nilai dari posisi tengah for (int j = 0; j < i; ++j) //tampilkan nilai segitiga pascal baris ke-i printf("%3d ",segitiga_pascal(i, j)); printf("\n"); tengah--; void PrintBinary(int &x,int &d) if (d>0) //buffer[index++] = '0'+ (x & 1) ; (x & 1)? buffer[index++]='1': buffer[index++]='0'; x >>= 1;d--; PrintBinary(x,d); while (index >0 ) printf("%c",buffer[--index]) ; printf("\n") ; Bagian II : Pilihan Berganda (Score Max : 20) Score per soal : 2 (jika tanpa penjelasan) atau 5 (jika dengan penjelasan) Petunjuk : Dalam satu soal ada kemungkinan jawaban lebih dari satu atau tidak ada jawaban sama sekali. Jika ada jawaban tulis dengan menggunakan huruf kapital pilihan jawaban yang menurut anda benar (jika salah satu salah maka jawaban anda dianggap salah), sebaliknya jika tidak ada jawaban sama sekali tolong tulis Tidak Ada Jawaban Yang Benar. Jangan lupa jelaskan alasan jawaban anda tersebut kalo mo dapet score yang lebih tinggi. 1. Berikut ini adalah library header yang bisa digunakan dalam pengelolaan file kecuali A. stdio.h B. iostream.h C. fstram.h D. Stdlib.h 2. Potongan program berikut ini yang berfungsi untuk menyiapkan atau membuka file untuk diisi dengan data yang baru adalah A. FILE *PointerFile; PointerFile = fopen("file03a.dat","r+"); B. ofstream File_Coba; File_Coba.open( Coba.Dat, ios::out); C. fstream PointerFile; PointerFile.open("File03a.dat", ios::app); D. ifstream File_Coba; File_Coba.open( Coba.Dat,ios::app ios::out); 3. Pasangan library header dengan perintah berikut ini adalah benar kecuali A. ofstream.h File_Coba.open( Coba.Dat,ios::app ios::out); B. fstream.h fstream PointerFile; C. stdio.h fscanf(arsip1, format KeyType &ValType, Rek1.Key1,Rek1.ValIn); D. stdio.h fwrite(arsipgabung, format KeyType& ValType, Rek1.KeyIn,Rek1.ValIn); 4. Perintah-perintah berikut ini yang bisa digunakan dalam operasi file adalah A. fgetc() B. fgets() C. gets() D. getw() Solusi UTS-Pemrograman II Ver/Rev : 2 /0 Halaman : 9 dari 10

5. Tujuan perintah fclose(namapointerfile) atau NamaPointerFile.close() adalah untuk A. Untuk menutup semua file dan menghentikan program B. Menutup file tertentu karena sudah tidak digunakan lagi di dalam program C. Menutup program karena ingin membuka file yang lain D. Merekam informasi yang ada dipenyangga ke file, sebelum program dihentikan 6. Perbedaan perintah fread dan read dalam pengelolaan file adalah A. fread menggunakan library header stdio.h, sedangkan read menggunakan library header fstream.h B. fread berfungsi untuk membaca data dalam file, sedangkan read berfungsi juga untuk membaca data dalam file C. Sintaks penulisan perintah fread dan read berbeda D. fread menggunakan library header fstream.h, sedangkan read menggunakan library header stdio.h 7. Perintah-perintah berikut ini berfungsi untuk membaca sebuah nilai atau karakter dalam file, kecuali A. fgetc() B. fgets() C. fscanf() D. getw() 8. Sintaks penulisan perintah penulisan data dari buffer ke dalam berikut ini adalah benar, kecuali A. ArsipUpdate.write((char *)&RekBaru,sizeof(RekBaru)); B. fwrite(arsipupdate, %d %s, RekLama.KeyIn,RekLama.ValIn); C. ArsipUpdate.write((char *)&RekBaru,sizeof(RekBaru); D. fwrite(arsipupdate, %d %s, RekLama.KeyIn.RekLama.ValIn); Solusi UTS-Pemrograman II Ver/Rev : 2 /0 Halaman : 10 dari 10