soalUTS Dikonversi2 [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up

soalUTS Dikonversi2 [PDF]

PETUNJUK PENGERJAAN SOAL UJIAN TENGAH SEMESTER (UTS) MATAKULIAH ALGORITMA DAN STRUKTUR DATA Petunjuk Umum : 1. Kerjakan

11 0 122 KB

Report DMCA / Copyright

DOWNLOAD FILE


File loading please wait...
Citation preview

PETUNJUK PENGERJAAN SOAL UJIAN TENGAH SEMESTER (UTS) MATAKULIAH ALGORITMA DAN STRUKTUR DATA Petunjuk Umum : 1. Kerjakan soal di kertas A4/Polio bergaris 2. Kerjakan soal tidak harus berurutan, kerjakan soal yang dianggap mudah terlebih dahulu Petunjuk Khusus: 1. Lembar Jawaban (kertas A4/Polio bergaris) yang telah diisi, di pindai/scan dan dikirimkan berupa file .pdf ke alamat email [email protected] dengan format pengiriman file: NamaMahasiswa_NIM_Kls 2. Pengumpulan lembar jawaban paling lambat tanggal 01 April 2020 Pukul 18.00 WIB



SOAL UJIAN 3. Jelaskan pemahaman anda mengenai algoritma, pemrograman, struktur data. Bagaimana kaitannya dengan informatika Jawab Algoritma adalah langkah-langkah yang sistematis dan logis untuk menyelesaikan masalah. Pemrograman adalah proses pengerjaan penulisan intruksi oleh programmer untuk menyelesaikan suatu masalah. Sedangkan Struktur data adalah sebuah proses bagaimana menyimpan, menyusun, dan mengurutkan data dalam memory agar dapat dipergunakan secara efisien. Ketiganya saling berkaitan, dengan pemilihan struktur data yang baik, maka problem yang kompleks dapat diselesaikan sehingga algoritma dapat digunakan secara efisien, operasi-operasi penting dapat dieksekusi dengan sumber daya yang lebih kecil, memori lebih kecil, dan waktu eksekusi yang lebih cepat. Nah, pada pemrogramanlah kita bisa mengimplementasikan algoritma tersebut dengan menggunakan bahasa tertentu. Tentu ketiganya juga sangat bekaitan erat dengan informatika, karena proses pemrograman tersebut dilakukan pada komputer. Dan informatika sendiri adalah sebuah disiplin ilmu komputer.



4. Buatlah algoritma untuk menulis dan membaca kembali file yang rekamannya type terstruktur. Berikut file terstruktur yang akan digunakan Struct { char Nama[30]; char Kelas[2]; int Angkatan; char Jenis_Kelamin[1]; }Biodatalulusan;



Jawab Algoritma Biodata_Lulusan Deklarasi Type Biodata_lulusan : record < Nama : string, Kelas : string, Angkatan: integer, Jns_Kel : char >



BLulusan : Bio_lulusan BL : File of Bio_lulusan Answer : char Deskripsi Assign(BL,’BL.dat’) Rewrite(BL) Repeat Write(‘Nama : ‘) read(BLulusan.Nama) Write(‘Kelas : ‘) read(BLulusan.Kelas) Write(‘Angkatan : ‘) read(BLulusan.Angkatan) Write(‘Jenis_kelamin : ‘) read(BLulusan.Jns_kel) Write(BL,BLulusan) {data yang ditampung var Blulusan dimasukan ke file BL} Write(‘Masukan Data lagi ?’) read(answer) Until(answer=’T’) or (answer=’t’) Reset(BL) While not eof(BL)do Read(BL,Blulusan) Endwhile Close(BL)



5. Diberikan sebuah mesin karakter dengan pita berisi karakter (mungkin kosong) hitunglah -



Banyaknya kemunculan huruf hidup yang muncul pada pita tersebut



-



Frekuensi huruf hidup



-



Banyaknya kemunculan setiap huruf hidup



Definisikan dengan jelas apa yang dimaksud degan huruf hidup. 6. Berikut ini diberikan konsep algoritma untuk ADT pecahan (pecahan.h) dengan atribut sebagai berikut : Pembilang (N) dan Penyebut (D) /* file : pecahan.h */ #ifndef Pecahan_H #define Pecahan_H #include “booleah.h” #define Nil 0 Typedef struct { int N; /* Numerator = pembilang */ Int D; /* Denumerator = penyebut */ }Pecahan; Pecahan P; #define N(P) (P).n #define D(P) (P).d /* *** VALIDASI TERHADAP TYPE *** */ boolean IsValidPecahan (int n, int d); /* Mengirim true jika n dan d dapat membentuk Pecahan yang valid */



/* Dipakai untuk mengetes SEBELUM membentuk sebuah Pecahan */ /* *** DEFINISI DAN SPESIFIKASI KONSTRUKTOR *** */ Pecahan MakePecahan (int n, int d); /* Membentuk Pecahan dari pembilang n dan penyebut d */ /* Prekondisi : n dan d dapat membentuk Pecahan yang valid */ /* *** DEFINISI DAN SPESIFIKASI OPERATOR BACA/TULIS *** */ void BacaPecahan (Pecahan * P); /* I.S. Sembarang */ /* F.S. P terdefinisi dan merupakan Pecahan yang valid */ /* Proses : Mengulangi membaca komponen d dan n sehingga menghasilkan nilai yang dapat membentuk Pecahan yang valid dan selanjutnya membentuk P. */ /* Pesan kesalahan jika masukan Pecahan tidak valid : "Masukan pecahan tidak valid" */ /* Elemen-elemen Pecahan dibaca dalam satu baris perintah dengan masing masing elemen dipisahkan sebuah spasi, lalu enter di akhir */ /* Contoh format input: -1 2 Artinya: P.d = -1, P.n = 2 */ void TulisPecahan (Pecahan P); /* I.S. P terdefinisi */ /* F.S. Nilai P ditulis ke layar dengan format n/d, tanpa spasi dan enter di awal ataupun di akhir */ /* *** DEFINISI DAN SPESIFIKASI OPERATOR RELASIONAL *** */ boolean IsEqual (Pecahan P1, Pecahan P2); /* Menghasilkan true jika P1=P2 */ /* Membandingkan apakah dua buah pecahan sama nilainya: n1/d1 = n2/d2 jika dan hanya jika n1*d2=n2*d1 */ boolean IsLt (Pecahan P1, Pecahan P2); /* Menghasilkan true jika P1 n2/d2 jika dan



Pecahan P2); P1>P2 */ pecahan, apakah P1 lebih besar nilainya dari hanya jika n1*d2 > n2*d1 */



/* *** DEFINISI DAN SPESIFIKASI OPERATOR ARITMATIKA *** */ Pecahan AddPecahan (Pecahan P1, Pecahan P2); /* Menambahkan dua buah pecahan P1 dan P2 : Menambahkan dua pecahan: n1/d1 + n2/d2 = (n1*d2 + n2*d1)/d1*d2 */ Pecahan SubPecahan (Pecahan P1, Pecahan P2); /* Mengurangkan dua buah pecahan P1 dan P2 : Mengurangkan dua pecahan : n1/d1 - n2/d2 = (n1*d2



n2*d1)/(d1*d2) */



Pecahan MulPecahan (Pecahan P1, Pecahan P2); /* Mengalikan dua buah pecahan P1 dan P2: Mengalikan dua pecahan : n1/d1 * n2/d2 =( n1*n2)/(d1*d2) */



Pecahan DivPecahan (Pecahan P1, Pecahan P2); /* Membagi dua buah pecahan P1 dan P2: Membagi dua pecahan : (n1/d1)/(n2/d2) = (n1*d2)/(d1*n2) */ /* Prekondisi: Pemb(P2) > 0 (pecahan pembagi bukan 0) */ float RealPecahan (Pecahan P); /* Menghasilkan Pecahan P dalam notasi decimal/bentuk bilangan real */



Implementasikan primitif yang ada pada ADT penjumlahan diatas, sehigga membentuk file penjumlahan.c