31
UJIAN AKHIR SEMESTER GENAP 2013/2014 FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS GADJAH MADA Mata Kuliah : Algoritma dan Struktur Data 1 Prodi : Statistika/Matematika Hari, Tanggal : Senin, 30 Juni 2014 Waktu : 120 menit Dosen : Faizah, S.Kom, M.Kom Sifat Ujian : Boleh buka catatan *) *Hanya boleh membuka catatan maks 1 lembar ukuran A4/F4 bolak balik *Tidak boleh saling bertukar catatan selama ujian Perhatian : Jangan lupa berdoa dulu sebelum mengerjakan soal ^_^ SOAL. 1. Diketahui di sebuah taman kanak-kanak diadakan lomba menyanyi. Jika diurutkan berdasarkan nomor urut pendaftaran, umur masing-masing 10 peserta pertama dalam bulan adalah: 63; 76; 58; 72,5; 65; 67,5; 59; 71; 63; 75. Dengan menggunakan Algoritma Merge Sort, tuliskan pseudocode untuk mengurutkan data tersebut dan mencari anak usia termuda dan tertua! 2. a. Tuliskan pseudocode untuk membuat linked list sederhana, berisikan 3 node, dengan isi data sbb: Node 1 : {10,next} Node 2 : {20,next} Node 3 : {40,next} b. Tulis pseudocode untuk menyisipkan node {15,next} di antara node 1 dan 2 3. a. Gambarkan sebuah pohon binary search tree untuk data sebagai berikut: 40 13 41 19 10 23 87 34 24 45 21 11 12 5 b. Tuliskan hasil penelusuran data secara preorder, inorder, dan postorder !

ALGORITMA DAN STRUKTUR DATA I.pdf

Embed Size (px)

Citation preview

Page 1: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN AKHIR SEMESTER GENAP 2013/2014

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

Mata Kuliah : Algoritma dan Struktur Data 1

Prodi : Statistika/Matematika

Hari, Tanggal : Senin, 30 Juni 2014

Waktu : 120 menit

Dosen : Faizah, S.Kom, M.Kom

Sifat Ujian : Boleh buka catatan *)

*Hanya boleh membuka catatan maks 1 lembar ukuran A4/F4 bolak balik

*Tidak boleh saling bertukar catatan selama ujian

Perhatian :

Jangan lupa berdoa dulu sebelum mengerjakan soal ^_^

SOAL.

1. Diketahui di sebuah taman kanak-kanak diadakan lomba menyanyi. Jika diurutkan

berdasarkan nomor urut pendaftaran, umur masing-masing 10 peserta pertama dalam

bulan adalah: 63; 76; 58; 72,5; 65; 67,5; 59; 71; 63; 75.

Dengan menggunakan Algoritma Merge Sort, tuliskan pseudocode untuk

mengurutkan data tersebut dan mencari anak usia termuda dan tertua!

2. a. Tuliskan pseudocode untuk membuat linked list sederhana, berisikan 3 node,

dengan isi data sbb:

Node 1 : {10,next}

Node 2 : {20,next}

Node 3 : {40,next}

b. Tulis pseudocode untuk menyisipkan node {15,next} di antara node 1 dan 2

3. a. Gambarkan sebuah pohon binary search tree untuk data sebagai berikut:

40 13 41 19 10 23 87 34 24 45 21 11 12 5

b. Tuliskan hasil penelusuran data secara preorder, inorder, dan postorder !

Page 2: ALGORITMA DAN STRUKTUR DATA I.pdf

4. Diketahui program fungsi rekursif sebagai berikut :

Berapa Hasil Output x1, x2, dan x3 ? Tuliskan jawaban beserta langkah-langkahnya!

------------------Selamat mengerjakan, semoga sukses ------------------

double k(double x) {

return 2 * (x+1) ;

}

double h(double x) {

return x*x + k(x) – 1 ;

}

double g(double x) {

return 4*h(x) ;

}

double f(double x) {

return g(x) + sqrt(h(x));

}

int main( ) {

double x1 = f(2);

cout<<x1 <<endl;

double x2 = g(h(2)) ;

double x3 = k(g(2) + h(2));

cout<<x2 <<endl;

cout<<x3 <<endl;

return 0;

}

Page 3: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN AKHIR SEMESTER GENAP 2013/2014

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

MATA KULIAH : Algoritma dan Struktur Data (Mat-Stat B)

TANGGAL/WAKTU : 30 Juni 2014 / 100 menit

SIFAT UJIAN : Buku Terbuka

DOSEN : Drs. Janoe Hendarto , M.Kom

1. a. Jelaskan mengapa algoritma rekursif untuk menentukan barisan fibonanci tidak efisien dari

segi waktu proses ? algoritma mergesort dan quicksort sama sama menggunakan teknik devide

and conquer, jelaskan apa saja perbedaan dari kedua algoritma sorting tersebut.

b. Dengan menggunakan data input di bawah ini. Tuliskan urutan data sampai terurut (ascending)

dan hitung berapa kali operasi perbandingan dilakukan, jika digunakan algoritma mergesort,

juga tentukan set data tersebut termasuk best, worst, atau averagecase ?

74, 21, 65, 35, 4, 96, 10, 32, 89, 62, 85, 32, 68, 89, 91, 84

2.

a. Tentukan output program berikut :

#include <iostream>

#include <conio.h>

using namespace std;

int data1 [5] = {3,2,2,1,4};

int data2 [5] = {0}, data3 [5],I;

main() {

for (i=0;i<5;i++) data2 [data1 [i]]++ ;

for (i=0;i<5;i++) data2[i] = data2 [i] =data2[i-1];

for (i=4;i>=0;i--) {

data3 [data2 [data1 [i]]] = data1 [i];

data2 [data1 [i]] -- ;}

for (i=0;i<5;i++) cout<<data3 [i] << “ “;

}

b. Perhatikan program berikut :

#include <iostream>

#include <conio.h>

using namespace std;

int N, hasil=0;

void solve (int X) {

If (X>1) {hasil++; solve (X/2 + X%2) ; }

}

Main () {

Cin >> N;

solve (N);

Cout<<hasil;

}

Tentukan output jika N diisi 77 dan

Tentukan output jika N diisi 1000000

c. tentukan output program berikut :

#include <iostream>

#include <conio.h>

using namespace std;

typedef int matrik [10][10];

matrik A;

int I,j,p,q;

void bacamatrik (matrik M, int m,int n) {

for (i=0;i<m;i++)

for (j=0;j<n;j++) M[i][j] = abs ((j-i)*(i-j));

}

void cetakmatrik (matrik M, , int m,int n) {

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

for (j=0;j<n;j++) cout<< M[i][j]<<”\t”;

cout<<endl; }

fo<<endl;}

}

void Apaan (matrik M, , int m,int n) {

for (i=0;i<m,i++)

for (j=0;j<n;j++)

if (M[i][j] != M[i][j]) M[i][j]=0;

else M[i][j]=1;

}

main () {

p=5;q=5;

bacamatrik (A,p,q);

cetakmatrik (A,p,q);

Apaan (A,p,q);

getch();

}

Page 4: ALGORITMA DAN STRUKTUR DATA I.pdf

3. Buatlah program untuk membaca n data lingkaran yang disimpan di latik L dimana data

lingkaran adalah berupa record/struktur yang terdiri dari Xp, Yp (titik pusat) dan R(jari-jari_,

kemudian mengurutkan array L berdasarkan posisi lingkaran di sumbu X dari kiri ke kanan

dan akhornya mencetak larik L yang meliputi titik pusat, jari-jari dan luas lingkarannya

Page 5: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN TENGAH SEMESTER GENAP 2013/2014

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

Mata Kuliah : Algoritma dan Struktur Data 1

Prodi : Matematika/ Statistika

Hari, Tanggal : Senin, 21 April 2014

Waktu : 110 menit

Dosen : Faizah, S.Kom, M.Kom

Sifat Ujian : Boleh buka catatan *)

*hanya boleh membuka catatan maks 1 lembar ukuran A4/F4 bolak

balik

*tidak boleh saling bertukar catatan selama ujian

Perhatian :

Jangan lupa berdoa dulu sebelum mengerjakan soal ^_^

SOAL.

1. Mr.X memiliki simpanan tabungan di bank sebesar $10.000. Bank memberikan bunga

bulanan sebesar 6% setahun (0,5 % sebulan). Setiap bulan Mr. X mengambil uang

sebesar $500. Tuliskan algoritma untuk membantu Mr.X memperkirakan pada bulan

keberapa uang simpanannya akan habis!

2. Diketahui formula untuk menghitung nilai x adalah sebagai berikut :

𝑥

2= −

1

2+

1

4−

1

6+

1

8− ⋯

Tuliskan pseudocode untuk menghitung x, jika algoritma berhenti setelah sejumlah

langkah tertentu atau dengan batasan nilai tetentu.

3. A. Perhatikan potongan program berikut :

int mystery (int n)

{

n++;

n++;

return n;

}

int main ()

{

int a = 5;

cout << mystery (a) << endl;

}

Tuliskan keluaran dari potongan program tersebut beserta langkah-langkahnya .

Page 6: ALGORITMA DAN STRUKTUR DATA I.pdf

B. perhatikan fungsi rekrusif beikut :

int mystery (int n)

{

if (n>=0) { return 0; }

return mystery (n/2) + 1;

}

Tampilkan keluaran dari fungsi di atas jika dipanggil dengan mystery(40) !

4. Tuliskan keluaran dari potongan program berikut lengkap dengan langkah-

langkahnya!

using namespace std;

int a=0;

int b=0;

int f (int c)

{

int n=0;

a=c;

if (n<c)

{

n=a+b;

}

return n;

}

int g (int c)

{

int n=0;

int a=c;

if (n< f(c))

{

n=a+b;

}

return n*4+5;

}

int main ()

{

int i=1;

int b=g(i)

cout<< a+b –I << endl;

return 0;

}

Page 7: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN TENGAH SEMESTER GENAP 2012/2013

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

Mata Kuliah : Algoritma dan Struktur Data I ( Mat, Stat - C )

Tanggal Ujian : Jum’at, 12 April 2013

Waktu : 100 menit

Dosen : Yunita Sari,S.Kom., M.Sc.

Sifat : Closed Book

1. Misal diketahui deret bilangan sebagai berikut 2 3 6 5 9 11 7 8 13 4 7

Buatlah lowchart dari sebuah program untuk menghitung jumla (sum) dari seluruh

bilangan prima pada deret bilangan tersebut. ( nilai 20 poin )

2. Perhatikan potongan program berikut ini dan tentukan output dari program tsb setelah

dieksekusi! ( note : program pada point a dan b TIDAK saling berhubungan )

( nilai 20 poin )

a. Asumsi : inputnya adalah kata “original” char word[10];

int k;

char swap;

cout<<”enter a line : “;

gets (word);

int len = strlen (word);

k = len / 2;

for (int i=1; i<k; i++) {

swap = word[ i ];

word[ i ]=word [ len – 1 – i ];

word[ len – 1 – i ] = swap;

}

cout<<word;

b. int a = 1; int b = 3;

int c = 6;

int d = 2;

while ( a < 10 ){

do{

b = b + a + c;

c - -;

} while ( c > 1 );

d = d + a + c;

a + +;

}

cout<< b << endl;

cout<< d << endl;

Page 8: ALGORITMA DAN STRUKTUR DATA I.pdf

3. Diketahui 2 buah matrix A dan B sebagai berikut :

𝐴 = (1 3 65 7 85 1 12

) 𝐵 = (1 35 74 9

)

Tuliskan program dalam bahasa C++ untuk menghasilkan matrix C yang merupakan

hasil perkalian matrix A dan B. ( C= A x B) (nilai 30 poin)

4. Tulislah program dalam bahasa pemrograman C++ untuk membuat output sebagai

berikut (nilai 30 poin)

1 1 1 1 1

2 4 8 16 32

3 9 27 81 243

4 16 64 256 1024

5 25 125 625 3125

Page 9: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN TENGAH SEMESTER GENAP 2012/2013

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

Mata Kuliah : Algoritma dan Struktur Data I ( Mat, Stat - A )

Tanggal Ujian : Jum’at, 12 April 2013

Waktu : 100 menit

Dosen : Faizah, S.Kom, M.Kom.

Sifat : Buku tertutup

1. Jelaskan pengertian dan ciri dasar dari algoritma! ( Bobot nilai 20 )

2. Diketahui formula untuk menghitung nilai 𝜋 adalah sebagai berikut :

𝝅

𝟒= 𝟏 −

𝟏

𝟑+

𝟏

𝟓−

𝟏

𝟕+

𝟏

𝟗− ⋯

Tuliskan algoritma untuk menghitung 𝜋, jika algoritma berhenti setelah sejumlah

langkah tertentu atau dengan batasan nilai tertentu. ( Bobot nilai 30 )

3. Tuliskan keluaran dari potongan program berikut : ( Bobot nilai 10 )

for ( int i = 0 ; i < 3 ; i + + ) {

for ( int j = 0 ; j < 4 ; j + + ) {

cout<< i + j

}

cout<< endl;

} 4. Tuliskan keluaran dari potongan program berikut beserta langkah – langkahnya :

a. ( Bobot nilai 10 )

double mystery ( int x, int y )

{

double z = x + y;

z = z / 2.0 ;

return z ;

}

int main ( )

{

int a = 5 ;

int b = 7 ;

cout << mystery ( a, b ) << endl;

}

Page 10: ALGORITMA DAN STRUKTUR DATA I.pdf

b. ( Bobot nilai 20 )

Int mystery ( int n )

{

If ( n <= 0 ) { return 0; }

Return n + mystery ( n – 1 ) ;

}

What is mystery ( 4 ) ?

c. ( Bobot nilai 10 )

void mystery ( int& a, int& b )

{

a = a – b;

b = b + a;

a = b – a;

}

Int main ( )

{

int x = 4 ;

int y = 3 ;

mystery ( x , y ) ;

cout<< x << “ “ << y << endl;

}

Page 11: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN TENGAH SEMESTER GENAP 2012/2013

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

Mata Kuliah : Algoritma dan Struktur Data I ( Mat, Stat - B )

Tanggal Ujian : Jum’at, 12 April 2013

Waktu : 120 menit

Dosen : Anifuddin Azis, S.Si., M.Kom.

Sifat : Buku Terbuka

1. Jelaskan langkah – langkah pembuatan program komputer !

2. Apa parameter program yang efisien ?

3. Buatlah program untuk membaca N buah bilangan bulat positif, lalu menampilkan

banyaknya bilangan ganjil pada data tersebut.

Contoh :

N = 4

7 3 21 4

Maka keluaran adalah 3 ( ada 3 bilangan ganjil pada 4 data di atas ).

4. Buatlah program membaca 2 data persegi panjang A dan B. Persegi panjang A

memiliki titik kiri bawah (x11, y11) dan kanan atas (x21, y21), sedangkan persegi

panjang B memiliki titik kiri bawah (x12, y12) dan kanan atas (x22, y22). Program

akan menentukan persegi panjang mana yang luasnya lebih besar.

5. N buah garis bertemu pada sebuah titik O. Buatlah program untuk menentukan

banyaknya sudut yang mungkin terbentuk dari pertemuan garis – garis tersebut.

Misal N = 3, maka banyaknya sudut yang terbentuk ada 3.

6. Buatlah program untuk menampilkan sebuah bilangan prima terbesar yang lebih kecil

dari bilangan N.

Misal N = 14, maka bilangan prima terbesarnya adalah 13.

7. Berikut sebuah potongan program :

for (i=1; i<= 20; i++)

{ j= 0;

while (j < 13)

{ j = j + (i%5) + 1;

cout<< “ * “ ;

}

}

Maka banyaknya karakter “*” yang dicetak adalah .... Jelaskan !

SELAMAT MEGERJAKAN, SEMOGA BERHASIL

Page 12: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN AKHIR SEMESTER GENAP 2012/2013

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

Mata Kuliah : Algoritma dan Struktur Data I ( Mat, Stat - C )

Tanggal Ujian : Jum’at, 21 Juni 2013

Waktu : 100 menit

Dosen : Yunita Sari,S.Kom., M.Sc.

Sifat : Open Book

1. Tuliskan program dalam bahasa C++ dengan menggunakan recursive function untuk

mengecek apakah sebuah kata adalah palindrome atau bukan. Sebuah kata dianggap

palindrome jika kata tersebut bisa dibaca sama baik dari depan maupun belakang (

contoh palindrome : KATAK, MALAM ) ( nilai 30 poin )

2. Diketahui array integer sebagai berikut 12 13 14 15 16 11 10 9 8 7

Dengan menggunakan algoritma QuickSort dan MergeSort ilustrasikan pengurutan

array tsb secara ascending! ( nilai 25 poin )

3. a. Tentukan isi dari array new setelah program di bawah ini dieksekusi ( nilai 10 poin

)

int new [ ] = { 16, 3, 7 };

int *p = new;

int *q = new + 2;

p++;

q--;

*p = *q;

b. Tentukan output dari potongan kode di bawah ini ( nilai 10 poin )

int test [ ] = { 1, 2, 3, 5, 7 }

int *p = test;

cout<< *p+2<<endl;

cout<< *(p+2)<<endl;

c. Tentukan output dari potongan berikut ( nilai 10 poin ) void mystery ( int a, int &b )

{

a = a – b; b = b + a;

a = b – a;

} Int mystery_2 ( int &a, int b )

{

a = a – b; b = b + a;

a = b – a;

return a; }

Int main ( )

{ Int x = 4;

Int y = 3;

Mystery (x, y); Cout<< x << “ “ << y << endl;

Cout<< mystery_2 (x, y) << endl;

}

Page 13: ALGORITMA DAN STRUKTUR DATA I.pdf

4. Deklarasikan nested struct untuk data pesawat terbang berikut :

Name of plane ( Boeing, Airbus, Bell, etc )

Model of plane ( 747, 777, a321 )

Manufacturer

Date manufactured made up of day, month, year

Capacity of passengers

Tuliskan program dalam bahasa C++ sehingga user bisa memasukkan informasi di

atas dan menampilkan informasi tsb di layar ( nilai 15 poin )

Page 14: ALGORITMA DAN STRUKTUR DATA I.pdf

current

UJIAN AKHIR SEMESTER GENAP 2012/2013

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

Mata Kuliah : Algoritma dan Struktur Data I ( Mat, Stat - A )

Tanggal Ujian : Jum’at, 21 Juni 2013

Waktu : 100 menit

Dosen : Faizah, S.Kom, M.Kom.

Sifat : Buku tertutup

1. Diketahui harga 5 barang berturut-turut sebagai berikut : 20.000, 2000, 10.000,

23.000, 4000.

Dengan menggunakan Quick Sort, urutkan kelima barang tersebut dari harga paling

murah. Tuliskan pseudocode algoritma penyelesaiannya! ( Bobot 30 )

2. Jelaskan perbedaan antara algoritma selection sort dan insertion sort! Berikan

contoh sederhana! ( Bobot 20 )

3. Diketahui sebuah linked list sebagai berikut :

a. Tuliskan pseudocode untuk menyisipkan 1 node antara c dan d!

b. Tuliskan pseudocode untuk menghapus node b!

c. Tuliskan pseudocode untuk menambahkan 1 node sesudah d!

( Bobot 15 )

4. a. Tuliskan output dari potongan program berikut :

for ( int n=10; n>=0; n-- )

{

Cout<<n<<endl

}

( Bobot 5 )

a b c d

Page 15: ALGORITMA DAN STRUKTUR DATA I.pdf

b. Berapa output dari potongan program berikut, jika dipanggil dengan f(10)!

Tuliskan jawaban beserta langkahnya!

Int f( int n )

{

If ( n<= 1 ) {return 1;}

If ( n % 2 == 0 ) // n is even

{

Return f( n / 2 );

}

Else { return f( 3*n+1 ); }

} ( Bobot 10 )

5. a. Gambarkan sebuah pohon binary search tree untuk data sebagai berikut :

12 22 10 3 1 90 23 87 34 24 45 30 ( Bobot 10 )

b. Gambarkan perubahan yang terjadi pada pohon jika nilai 45 dihapus

( Bobot 10 )

Page 16: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN AKHIR SEMESTER GENAP 2012/2013

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

Mata Kuliah : Algoritma dan Struktur Data I ( Mat, Stat - B )

Tanggal Ujian : Jum’at, 21 Juni 2013

Waktu : 120 menit

Dosen : Anifuddin Azis, S.Si., M.Kom.

Sifat : Buku Terbuka

1. Terdapat N buah kota. Buatlah program untuk menyimpan jarak antar kota, dari

kota 1 sampai kota N, kemudian tampilkan jarak antar kota apa (kota ke-i dan ke-j)

yang jaraknya terjauh.

2. Perhatikan kode program di bawah ini “cek” adalah sebuah array dengan indeks

mulai dari 1 s/d 100 yang setiap elemennya bernilai true atau false. Pada awal

program semua elemen array “cek” diberi nilai “false”.

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

if(cek[i]==false){

cout<<”#”<<i;

j=i;

Do

{cek[j]=true; j=j+i}

while (j<=n);

}

}

Jika n berharga 50, berapa kalikah karakter ‘#’ muncul di output? Jelaskan!

3. Dimiliki data yang disimpan dalam array berturut – turut : 21 4 12 6 16 3 7 9.

Jika dilakukan pengurutan menggunakan algoritma Selection Sort, jelaskan

langkah – langkahnya sampai iterasi ke-3.

4. Buatlah fungsi untuk menghitung nilai median.

5. Dimiliki array x yang berindeks 0-9, dengan elemen array berturut-turut :

2,6,4,3,3,7,7,3,4,8. Dan dimiliki sebuah fungsi sebagai berikut :

int inijuga(int a,b)

{int t;

if (a>b)

inijuga = inijuga(b,a);

else if (a==b)

inijuga = x[a];

else {

t=(a+b) / 2;

inijuga = inijuga(a,t) + inijuga(t+1,b);

}

}

Pada pemanggilan cout<<inijuga(1,4); akan dicetak nilai .... Jelaskan!

Page 17: ALGORITMA DAN STRUKTUR DATA I.pdf

6. Sebuah program sbb :

void UAS(int a,int &b, int c, int &d) {

a=a+1;

b=b+1;

c=c+a;

d=d+b;

}

main ( ) {

int m,n,x,y;

m = 2; n = 3; x = 4; y = 5;

UAS(m,n,x,y);

cout<<m<<” ”<<n<<” ”<<x<<” ”<<y;

getch( );

}

Apa keluaran program di atas? Jelaskan!

7. Dimiliki data NIM sebagai berikut : 1122, 1123, 1125, 1128, 1131, 1132, 1134.

Jelaskan proses pencarian NIM = 1125 menggunakan algoritma Binary Search.

SELAMAT MEGERJAKAN, SEMOGA BERHASIL

Page 18: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN AKHIR SEMESTER GENAP 2011/2012

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

Mata Kuliah : Algoritma dan Struktur Data I ( Mat, Stat - A )

Tanggal Ujian : Senin, 2 Juli 2012

Waktu : 120 menit

Dosen : Drs. Sri Mulyana, M.Kom

Sifat : Buku Terbuka

1. Buatlah program untuk menghitung nilai deret dan banyaknya suku dari

1 −2

3−

3

5+

4

7−

5

9−

6

11+

7

13− ⋯

Sehingga penyebutnya bernilai lebih dari atau sama dengan 500 ! ( Nilai = 25 )

2. Tentukan output dari program berikut dan jelaskan ! ( Nilai = 35 )

uses crt ;

procedure Belah ( x , y : integer ) ;

begin

writeln ( x , ‘ < - - > ‘ , y ) ;

if x < y then

begin

Belah ( x , ( x+y ) div 2 ) ;

Belah ( ( x+y ) div 2+1 , y ) ;

end ;

end ;

Begin

clrscr ;

Belah ( 5 , 8 ) ;

readln ;

end .

3. Diberikan Record Mahasiswa sebagai berikut : ( Nilai = 40 )

TYPE MHS = RECORD

NO : INTEGER;

NAMA : STRING[20];

UMUR : BYTE;

NILAI : BYTE;

END;

VAR

DATMHS1, DATMHS2 : ARRAY[1...50] OF MHS;

a) Buatlah Prosedur BACA untuk mengisi dua Variabel di atas (DATMHS1 dan

DATMHS2) yang masing – masing mempunyai m dan n data ! (m,n ≤ 50 )

b) Buatlah prosedur URUT untuk mengurutkan kedua Variabel tersebut berdasarkan

nilainya !

c) Buatlah prosedur GABUNG untuk menggabungkan kedua variabel tersebut (

setelah diurutkan ) menjadi satu yang tetap terurut berdasarkan nilainya !

Page 19: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN TENGAH SEMESTER GENAP 2011/2012

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

Mata Kuliah : Algoritma dan Struktur Data I ( Mat-Stat )

Tanggal Ujian : Senin, 23 April 2012

Waktu : 120 menit

Dosen : Drs. Sri Mulyana, M.Kom

Sifat : Buku Terbuka

Kelas : Mat-Stat A

1. KPK dalam matematika merupakan singkatan dari Kelipatan Persekutuan Terkecil,

yaitu bilangan terkecil yang habis dibagi oleh dua bilangan bulat positif yang tidak

sama. Contoh : KPK dari 8 dan 12 adalah 24.

Sesuai dengan tahapan – tahapan dalam penyelesaian masalah, buatlah program untuk

menentukan KPK dari sembarang dua bilangan positif yang tidak sama !

2. Dengan menggunakan data bertipe larik, buatlah program untuk menampilkan

segitiga PASCAL sebagai berikut :

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

dan seterusnya, sesuai dengan masukannya ! ( pada contoh di atas n=6 )

3. Diberikan 3 buah koordinat titik – titik A (x1,y1), B (x2,y2) dan C (x3,y3). Ketiga titik

tersebut jika dihubungkan pasti akan membentuk sebuah segitiga atau sebuah garis

lurus. Buatlah program untuk menentukan apakah 3 buah titik tersebut membentuk

garis lurus atau segitiga !

Selamat bekerja semoga sukses

Page 20: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN TENGAH SEMESTER GENAP 2010/2011

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

MATA UJIAN : ALGORITMA DAN PEMROGRAMAN

PROGRAM STUDI : STATISTIKA

WAKTU : 100 MENIT

SIFAT : BUKU TERBUKA

DOSEN : ANIFUDDIN AZIS, S.Si., M.Kom.

Catatan : Dilarang bekerja sama. Pengawas berhak mencatat mhs yang bekerja sama tanpa

pemberitahuan. Bagi mhs yang bekerja sama diberi nilai 20.

1. Perhatikan algoritma berikut ini

Algoritma UTS1

deklarasi

i, j, a, n : integer

deskripsi

read(n)

j←1

a←0

for i←1 to n do

a←a+j

j←j+3

end for

write(a)

Jika dimasukkan nilai n = 10, berapa nilai a yang dicetak oleh algoritma di atas ?

2. Perhatikan algoritma berikut ini

Algoritma UTS2

deklarasi

i, j, n : integer

deskripsi

read(n)

for i ← 1 to n do

for j ← 1 to n do

if ( ( i+ j ) mod 3 = 0 ) then

if ( ( i + j ) div 3 > 1 ) then write ( i, j )

else write ( j, i )

end if

else write (‘ :-- ( ‘ )

end if

end for

end for

Jika dimasukkan nilai n = 5, apa yang dihasilkan oleh algoritma di atas dan berapa kali di

cetak :--( ?

Page 21: ALGORITMA DAN STRUKTUR DATA I.pdf

3. Dimiliki tabel kelompok usia sebagai berikut :

Usia Usia < =

0

0 < Usia

<=12

12 <

Usia

<=24

24 <

Usia

<=36

36 <

Usia < =

48

48 <

Usia <=

60

60 <

Usia

Kelompok 0 1 2 3 4 5 6

Buatlah algoritma untuk membaca data N usia penduduk. Kemudian menampilkan distribusi

masing-masing kelompok usianya !

Misalkan :

Input N = 3

18

20

34

Output

Kelompok 0 = 0

Kelompok 1 = 0

Kelompok 2 = 2

Kelompok 3 = 1

Kelompok 4 = 0

Kelompok 5 = 0

Kelompok 6 = 0

Selamat Mengerjakan, semoga berhasil

Page 22: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN AKHIR SEMESTER GENAP 2010/2011

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS GADJAH MADA

MATA UJIAN : ALGORITMA DAN PEMROGRAMAN

PROGRAM STUDI : STATISTIKA

HARI/TANGGAL : RABU, 22 JUNI 2011

WAKTU : 120 MENIT

SIFAT : BUKU TERBUKA

DOSEN : ANIFUDDIN AZIS, S.Si., M.Kom.

Catatan : Dilarang bekerja sama. Pengawas berhak mencatat mhs yang bekerja sama tanpa

pemberitahuan. Bagi mhs yang bekerja sama diberi nilai 20.

1. Tujuan dari potongan algoritma berikut ini adalah mencetak deret bilangan : 1, 2, 5, 10, 17, 26,

37 dan seterusnya selama hingga pertama kali mencetak angka yang > 1000.

i←1

j←1

while ( i < = 1000 ) do

write ( i )

...........................// perintah yang hilang

j← j + 2

end while

write ( i )

a. Agar algoritma bekerja sesuai dengan yang diharapkan, perintah apakah yang arus

dituliskan di bagian “.......// perintah yang hilang”

b. Bila angka 1000 diganti dengan angka 10000, berapakah angka yang dicetak terakhir

kali ?

2. Perhatikan prosedure berikut ini :

Procedure hitung ( input a : integer )

Deskripsi

If ( a < 0 ) then

write(‘-‘)

hitung(-a)

else if ( a > 1 ) then

hitung(a div 2 )

Page 23: ALGORITMA DAN STRUKTUR DATA I.pdf

write ( a mod 2 )

end if

else write ( a )

end if

a. Apa yang dicetak pada pemanggilan hitug ( 100 ) ?

b. Untuk pemanggilan hitung ( M ), berapa nilai terkecil yang menghasilkan keluaran

bilangan berdigit 8 ?

3. Terdapat 8 data sebagai berikut : 35, 12, 29, 83, 57, 43, 67, 33. Tuliskan proses pengurutan secara

menaik menggunakan algoritma Bubble Sor dan selesction sort.

4. Berikut ini adalah bilangan dalam deret Fibbonacci :

Deret ke-i 1 2 3 4 5 6 7 8 9

bilangan 1 1 2 3 5 8 13 21 34

Jadi untuk bilangan ke-3 dst adalah jumlahan 2 bilangan sebelumnya, misal 13 = 5 + 8. Buatlah

algoritma menampilkan bilangan pada deret ke-N deret Fibbonacci secara rekursif dan non rekursif.

5. terdapat 2 titik pada koordinat caertesius yang menjadi pusat klaster, yaitu A(1,2) dan B(9, 7 ), serta

terdapat juga N titik lainnya. Buatlah algoritma untuk menentukan berapa titik yang masuk klaster A

dan berapa titik masuk klaster B ( titik yang masuk ke klaster A yaitu titik yang jaraknya ke titik A

lebih dekat daripada ke titik B dan sebaliknya )

Selamat Mengerjakan, semoga berhasil

Page 24: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN TENGAH SEMESTER II TAHUN 2009/2010

MATA UJIAN : ALGORITMA DAN PEMROGRAMAN

HARI/TANGGAL : 15 APRIL 2010

WAKTU : 120 MENIT

SIFAT : TERBUKA

DOSEN : ANIFUDDIN AZIS, S.Si., M.Kom.

1. Perhatikan algoritma di bawah ini :

Algoritma Tes1

deklarasi

i,j,k,x,y : integer

deskripsi

read(x)

i0

y0

while ( i < x ) do

for j 0 to I do

y y + (2*i)

end for

i i + 1

end while

for k 0 to y do

write(‘a’)

end for

a. Berapa nilai y yang dihasilkan pada akhir algoritma, jika nilai x adalah 3

b. Berapa nilai x minimum yang diperlukan agar dicetak lebih dari 80 huruf ‘a’

2. Sebuah perusahaan melakukan seleksi penerimaan pegawai kepada N orang calon pegawai.

Terdapat 3 jenis tes, yaitu Tes1, Tes2 dan Tes3. Nilai setiap Tes antar 0-100. Calon pegawai yang

dinyatakan lulus adalah yang memiliki nilai rata-rata lebih besar daripada 50 dan nilai salah satu

di antara Tes1 atau Tes2 lebih besar daripada 70. Buatlah algoritma untuk membaca nilai Tes dari

setiap calon pegawai, kemudian menampilkan berapa calon pegawai yang lulus dan berapa yang

tidak lulus.

3. Terdapat N orang mahasiswa. Setiap mahasiswa telah mengambil sejumlah M mata kuliah.

Buatlah algoritma untuk membaca data Nama mata kuliah, SKS, dan Nilai dari setiap mahasiswa,

kemudian menampilkan IPK setiap mahasiswa.

Page 25: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN AKHIR SEMESTER II TAHUN 2009/2010

MATA UJIAN : ALGORITMA DAN PEMROGRAMAN

HARI/TANGGAL : 2010

WAKTU : 120 MENIT

SIFAT : TERBUKA

DOSEN : ANIFUDDIN AZIS, S.Si., M.Kom.

1. Perhatikan program di bawah ini :

var a : array [1 …8 ] of integer = (12, 30, 21, 8, 6, 9, 1, 7)

h, k, val : integer ;

procedure zz( i, j : integer );

var temp : integer;

begin

temp:=a[i]; a[i]:=a[j]; a[j]:=temp;

end;

begin

val := a[1]; h :=1;

for k := 2 to 8 do begin

if ( a [k] < val ) then begin

h := h + 1;

zz ( h, k );

end;

end;

zz ( 1, h);

end.

Berapa isi array a setelah program ini dijalankan?

2. Perhatikan sebuah fungsi berikut ini :

function move ( n : integer ) : integer

begin

if ( n = 1 ) then move := 1 else move := 2*move(n-1)+1;

end;

Nilai kembalikan pemanggilan fungsi move(15) adalah…….

3. Terdapat 8 data integer berturut turut sebagai berikut : 13 7 8 15 12 20 6 9. Tentukan urutan data

akhir iterasi ke-4, jika data diurutkan secara urut naik menggunakan metode :

a. Bubble Sort

b. Selection Sort

4. Terdapat N data mahasiswa. Setiap data mahasiswa terdiri dari NIM, Nama, Prodi, dan IPK.

Buatlah function untuk menghitung :

a. Nilai IPK maksimum

b. Standar deviasi IPK mahasiswa

c. Dan buatlah prosedur untuk menampilkan Nama, Prodi, dan IPK seorang mahasiswa

berdasarkan masukan NIM mahasiswa tersebut

Page 26: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN TENGAH SEMESTER II TAHUN 2008/2009

MATA UJIAN : ALGORITMA DAN PEMROGRAMAN

HARI/TANGGAL : 13 APRIL 2009

WAKTU : 120 MENIT

SIFAT : TERBUKA

DOSEN : ANIFUDDIN AZIS, S.Si., M.Kom.

1. Perhatikan Algoritma di bawah ini

Algoritma Tes1

deklarasi

i,j :integer

deskripsi

j 2

for i 0 to 10 do

if j > 0 then write(‘ok’)

end if

j 5 – ( j*2 )

end for

a. Berapa kalikah penulisan keluaran ‘ok’ dilakukan?

b. Berapakah nilai j setelah keluar dari perulangan for tersebut?

2. Perhatikan algoritma di bawah ini :

Algoritma Tes2

Deklarasi

i,x,n :integer

deskripsi

read(x,n)

for i 1 to n do

case x of

1 : x (x + 22) mod 6

2 : x x*2

3 : x x – 1

4 : x 5 – x

5 : x x div 2 + 1

else x (x*4) mod 5 + 1

end case

write(x)

end for

a. Berapakah nilai x yang ditulis terakhir jika mula-mula dimasukkan nilai x = 31 dan n =

100

b. Berapa kalikah angka 5 muncul pada penulisan yang dilakukan jika mula-mula nilai

x=103 dan n=100

3. Di suatu RT diadakan pemilu. Terdapat 3 orang calon ketua RT yaitu Pak Budi (no urut 1), Bu

Ani (no urut 2), dan Pak Tono (no urut 3). Di RT tersebut terdapat 87 orang pemilih. Tiap pemilih

menuliskan no urut calon untuk memilih. Misalnya jika memilih Pak Budi, maka pemilih

menuliskan angka 1 dst.

Buatlah Algoritma untuk membaca pilihan dan menampilkan prosentase suara yang diperoleh

masing-masing calon ketua RT dan tampilkan pula nama calon yang mendapat suara terbanyak.

Page 27: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN TENGAH SEMESTER II TAHUN 2006/2007

MATA UJIAN : ALGORITMA DAN PEMROGRAMAN

HARI/TANGGAL : 28 MARET 2007

WAKTU : 120 MENIT

SIFAT : TERBUKA

DOSEN : ANIFUDDIN AZIS, S.Si., M.Kom.

1. Sebuah perusahaan mengadakan seleksi penerimaan pegawai baru. Terdapat N orang calon

pegawai yang mengikuti seleksi. Seleksi terdiri dari 4 tes, yaitu Tes1, Tes2, Tes3 dan Tes4.

Masing-masing tes nilainya antara 0-100. Calon pegawai yang lolos seleksi adalah mereka yang

nilai rata-ratanya di atas 70 dan tidak ada nilai dibawah 50 untuk setiap jenis tes. Misalkan ada

peserta dengan nilai untuk Tes1, Tes2, Tes3 dan Tes4 berturut turut adalah 90, 90, 80, 45, maka

peserta tersebut tidak lolos seleksi karena ada nilai di bawah 50 meskipun nilai rata-ratanya di

atas 70. Demikian juga jika ada nilai tes peserta berturut-turut 60, 65, 66, 69, peserta tersebut

tidak lolos seleksi karena nilai rata-ratanya di bawah 70. Buatlah algoritma untuk membaca nilai

Tes1, Tes2, tes3 dan Tes4 untuk N calon pegawai. Keluaran algoritma adalah jumlah calon

pegawai yang lolos seleksi.

2. Penilaian untuk mata kuliah Algoritma dan Pemrograman terdiri dari Tugas (bobot 10%), Kuis

(bobot 10%), UTS (bobot 40%), UAS (bobot 40%). Masing-masing penilaian berkisar antara 0-

100. Konversi nilai angka ke huruf mengikuti aturan sbb :

Jika total nilai >= 80 maka nilai A

Jika total nilai >= 65 maka nilai B

Jika total nilai >= 50 maka nilai C

Jika total nilai >= 40 maka nilai D

Jika total nilai < 40 maka nilai E

Buatlah algoritma yang membaca nilai (Tugas, Kuis, UTS, UAS) untuk N orang mahasiswa dan

keluaran algoritma adalah menampilkan berapa jumlah mahasiwa yang mendapat Nilai A, B, C, D

dan E

3. Buatlah algoritma untuk merubah bilangan bulat positif ( 1-100) ke dalam bilangan romawi

4. Jelaskan perbedaan struktur perulangan FOR, WHILE, DO dan REPEAT…UNTIL

5. Apa keluaran dari algoritma di bawah ini :

Algoritma tes

Deklarasi

Cek : Boolean

A, N, J : integer

Deskripsi

N 5

A 1

J 5

Cek false

While (A<=N) and not(Cek) do

J J+A

If J>N then Cek true

End if

A A+1

End while

Write (A,J)

Page 28: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN AKHIR SEMESTER II TAHUN 2008/2009

MATA UJIAN : ALGORITMA DAN PEMROGRAMAN

HARI/TANGGAL : 18 JUNI 2009

WAKTU : 120 MENIT

SIFAT : TERBUKA

DOSEN : ANIFUDDIN AZIS, S.Si., M.Kom.

1. Jelaskan manfaat tipe data array dan record

2. Tulislah output dari program berikut

a. Dimiliki larik A berisi 5 ( N=5 ) bilangan integer, sebagai berikut :

i 1 2 3 4 5

A[i] 6 7 1 3 2

Sebuah potongan program dikenakan pada larik di atas :

for i := 1 to ( N – 1 ) do

for k := ( i +1) to N do

if A[i] > A[k] then

begin

temp := A[i];

A[i] := A[k];

A[k] := temp;

end;

maka urutan larik setelah iterasi ke-2 ( i=2 ) adalah ………..

b. Dari soal a setelah iterasi ke-4 ( i=4 ), berapakah nilai A[4] + A[5] =

c. Program Satu;

var a, b, c, j : integer;

begin

a:=5; b:=10; c:=0; j:=0;

repeat

if (a*j) > b then c := c + b else c := c+a;

j := j+3;

until j > 15;

write(c);

end;

d. Program Dua;

Procedure Boo (t : integer);

var i : integer;

begin

if ( t > 0 ) then

begin

for i := 1 to t do write (‘OK’)

writeln;

Boo(t div 2);

writeln(‘YES’);

end;

end;

Begin

Boo(8);

Page 29: ALGORITMA DAN STRUKTUR DATA I.pdf

readln;

end.

3. Terdapat N data mahasiswa. Setiap mahasiswa memiliki NIM, Nama, dan 3 nilai yaitu : Tugas,

UTS, UAS. Buatlah algoritma untuk membaca data N mahasiswa tersebut dan menampilkan NIM

dan Nama mahasiswa yang rata-rata nilainya >= 60.

Page 30: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN AKHIR SEMESTER II TAHUN 2007/2008

MATA UJIAN : ALGORITMA DAN PEMROGRAMAN

HARI/TANGGAL : 10 JUNI 2008

WAKTU : 120 MENIT

SIFAT : TERBUKA

DOSEN : ANIFUDDIN AZIS, S.Si., M.Kom.

1. Sebuah fungsi rekursif sebagai berikut :

function abc(a, b : integer) : integer;

var c : integer;

begin

if b=0 then abc := a

else

begin

c := a mod b;

abc := abc(b,c)

end;

end;

Berapa nilai abc(335,100)…….

2. Diberikan larik integer A yang berukuran N elemen. Larik A sudah terdefinisi elemen-elemennya.

Tuliskan prosedur untuk menampilkan semua elemen larik A yang lebih besar dari rata-rata

elemen pada larik tsb.

3. Buatlah prosedur untuk menghitung banyaknya kata ‘belajar’ pada suatu teks. Tanda akhir dari

teks adalah karakter ‘.’. Teks mungkin saja kosong. Prosedur memberikan keluaran banyaknya

kata ‘belajar’. Jika kata tersebut tidak ada dalam teks atau teksnya kosong, maka prosedur

menghasilkan nilai 0.

4. Dimiliki data integer sebagai berikut : 10 7 20 23 8 15 29 2 5. Data akan diurutkan secara

ascending,

a. Menggunakan metode penukuran langsung, pada akhir iterasi ke-3, bagaimana urutan

datanya ?

b. Menggunakan metode pemilihan langsung, pada akhir iterasi ke-4, bagaimana urutan

datanya ?

Page 31: ALGORITMA DAN STRUKTUR DATA I.pdf

UJIAN AKHIR SEMESTER II TAHUN 2006/2007

MATA UJIAN : ALGORITMA DAN PEMROGRAMAN

HARI/TANGGAL : 6 JUNI 2007

WAKTU : 120 MENIT

SIFAT : TERBUKA

DOSEN : ANIFUDDIN AZIS, S.Si., M.Kom.

1. Sebuah fungsi rekursif sebagai berikut :

Function abc ( a,b : byte ) : longint;

Begin

If b=0 then abc:=1

else abc := a*abc(a, b-1);

end;

Berapa nilai abc(5,3)

2. Data mahasiswa yang mengambil matakuliah Algoritma dan Pemrograman terdiri dari NIM,

Nama, dan Program Studi. Buatlah prosedur untuk menginputkan sejumlah data mahasiswa

tersebut!

3. Berdasarkan soal no 2, buatlah prosedur untuk memisahkan data mahasiswa berdasarkan prodi,

misal ada 3 prodi, Matematika, Statistika, dan Ilmu Komputer. Sehingga data yang telah

diinputkan tadi (no 2) terpisah menjadi 3.

4. Apa keluaran dari algoritma berikut ini :

var m : integer

cek : boolean

procedure p1 ( var a : integer; var b : boolean );

begin

a := a*3;

if a=6 then b:=true else b:=false;

end;

procedure p2 ( var x : integer; y : boolean);

begin

x := x – 3;

y := false;

end;

begin

m :=2; cek:=true;

p1(m,cek);

p2(m,cek);

if cek and (m=6) then m:=m-1

else m:=m+6;

writeln(m);

readln;

end.