algoritma dan struktur data i.pdf
Post on 02-Feb-2016
207 Views
Preview:
TRANSCRIPT
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 !
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;
}
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();
}
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
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 .
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;
}
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;
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
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;
}
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;
}
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
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;
}
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 )
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
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 )
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!
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
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 !
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
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 :--( ?
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
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 )
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
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.
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
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.
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)
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);
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.
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 ?
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.
top related