Anda di halaman 1dari 21

K13-B17 PEMROGRAMAN

UTAMA

UJIAN SEKOLAH BERSTANDAR NASIONAL


SMK PROVINSI JAWA BARAT
TAHUN PELAJARAN 2018/2019

LEMBAR SOAL

MATA UJI : Pemrograman Dasar


SATUAN PENDIDIKAN : Sekolah Menengah Kejuruan (SMK)
HARI/TANGGAL : Senin/11 Maret 2019
ALOKASI WAKTU : 90 Menit
JUMLAH DAN BENTUK SOAL : PG 40 Soal
DIMULAI : 10.00 WIB
SELESAI : 11.30 WIB

PETUNJUK UMUM
1. Isikan identitas Anda ke dalam Lembar Jawaban Komputer (LJK) yang tersedia dengan
menggunakan pensil 2B, sesuai dengan petunjuk di Lembar Jawaban Komputer (LJK).
2. Tersedia waktu 120 menit untuk mengerjakan paket soal tersebut.
3. Pada setiap butir soal terdapat 5 (lima) pilihan jawaban.
4. Periksa dan bacalah soal-soal sebelum Anda menjawabnya.
5. Laporkan kepada pengawas ujian apabila terdapat lembar soal yang kurang jelas, rusak, atau
tidak lengkap.
6. Mintalah kertas buram kepada pengawas ujian, bila diperlukan
7. Tidak diizinkan menggunakan kalkulator, HP, table matematika atau alat bantu hitung lainnya.
8. Periksalah pekerjaan Anda sebelum diserahkan kepada pengawas ujian.
1. Dalam menyusun suatu program,langkah pertama yang harus di lakukan adalah….
A. Membuat program
B. Membuat algoritma
C. Membeli komputer
D. Menentukan proses
E. Membeli software

2. Diketahui bahwa kantong A kosong. Kantong B berisi 10 buah jeruk dan kantong C berisi 15
buah jeruk. Apabila yang terbawa hanya sebuah kantong dan di katakan BUKAN kantong A
yang terbawa, Maka jumlah buah jeruk yang terbawa adalah….
A. 10
B. 15
C. 10 atau 15
D. 10 dan 15
E. Kosong

3. Ada sebuah algoritma sebagai berikut : Apabila diinput warna merah maka hasilnya menjadi
hijau. Apabila input warna hijau maka hasil menjadi putih, selain warna merah dan hijau maka
menjadi ungu. Jika kondisi input warna adalah hitam, maka hasil warna menjadi….
A. Merah
B. Putih
C. Hitam
D. Ungu
E. Abu-abu

4. Perhatikan flowchart berikut:

Start

Read num

N
num%2=1

Read num

End

Pemrograman Dasar Halaman 2 dari 21


Pernyataan yang tepat mengenai flowchart di atas adalah….
A. Jika input = 0, output = 0
B. Jika input = 6, output = 6
C. Jika input = 1, output = 1
D. Jika input = 8, output = 2
E. Jika input = 5, output = 0

5. Pada flowchart penjumlahan aritmatika berikut, notasi yang tepat untuk “Cetak Hasil” adalah….

Mulai A.

Input nilai B.
A dan B

C.
Hasil = A + B

D.
Cetak Hasil

E.
Selesai

6. Dalam kegiatan sehari-harinya Pak Heru bekerja sebagai kuli tinta, seringkali beliau kesulitan
dalam menghitung gajinya, tentukan sintak program manakah yang sesuai dengan urutan
keluarannya, “berapa jam bekerja?”, “berapa besar gaji tiap jamnya?”, “mendapatkan
gaji(Rp)” ....
#include <conio.h> #include <iostream>
A. using namespace std;
int main(){
double jam, besar, bayar;
cout << " mendapatkan Gaji (Rp)";
cin >> jam;
cout << "Berapa besar gaji tiap jamnya? ";
cin >> besar;
bayar = jam * besar;
cout << " Berapa Jam bekerja?" << bayar << endl;
getch();return 0;}

#include <conio.h> #include <iostream>


B. using namespace std;
int main(){
double jam, besar, bayar;
cout << "Berapa Jam bekerja? ";
cin >> jam;
cout << " mendapatkan Gaji (Rp) ";
cin >> besar;
bayar = jam * besar;
cout << " Berapa besar gaji tiap jamnya? " << bayar << endl;
getch();return 0;}

Pemrograman Dasar Halaman 3 dari 21


#include <conio.h> #include <iostream>
C. using namespace std;
int main(){
double jam, besar, bayar;
cout << " Berapa besar gaji tiap jamnya ?";
cin >> jam;
cout << " Berapa Jam bekerja? ";
cin >> besar;
bayar = jam * besar;
cout << "mendapatkan Gaji (Rp)" << bayar << endl;
getch();return 0;}

D. #include <conio.h> #include <iostream>


using namespace std;
int main(){
double jam, besar, bayar;
cin << "Berapa Jam bekerja? ";
cout >> jam;
cout << "Berapa besar gaji tiap jamnya? ";
cin >> besar;
bayar = jam * besar;
cout << "mendapatkan Gaji (Rp)" << bayar << endl;
getch();return 0;}

E. #include <conio.h> #include <iostream>


using namespace std;
int main(){
double jam, besar, bayar;
cout << "Berapa Jam bekerja? ";
cin >> jam;
cout << "Berapa besar gaji tiap jamnya? ";
cin >> besar;
bayar = jam * besar;
cout << "mendapatkan Gaji (Rp)" << bayar << endl;
getch();return 0;}

7. Bu Diana sedang mengikuti program diet sehat, untuk mengetahui keberhasilannya bantulah
dengan menghitung berat ideal pada sintak program berikut :
#include <iostream>
#include <conio>
int main ()
{
float tb,bideal;
cout<<"________________________________________________"<<endl;
cout<<"\t\tBerat Badan Ideal"<<endl;
cout<<"________________________________________________"<<endl;
cout<<"Masukkan tinggi badan anda (cm) : ";
cin>>tb;
bideal = (tb - 100)-((tb - 100)*0.10); // Rumus
cout<<"\nBerat badan ideal anda adalah : "<<bideal<<" Kg";

getch (); }

Berapakah berat badan ideal Bu Diana apabila mempunyai tinggi badan 160 cm....
A. 50 Kg

Pemrograman Dasar Halaman 4 dari 21


B. 51 Kg
C. 52 Kg
D. 53 Kg
E. 54 Kg

8. Berikut ini adalah tabel tipe data dalam C


TIPE FORMAT KETERANGAN
char %c Karakter/string
int %i, %d Integer/bilangan bulat
float %f Float/bilangan pecahan presisi tunggal
double %lf Bilangan pecahan presisi ganda

#include <iostream>
using namespace std;
main()
{
XXXX huruf_1 = 'C', huruf_2 = '+';
cout <<"Tipe Data XXXXpada " << huruf_1 << huruf_2<< huruf_2;
getch();
return 0 ;
}

Tipe data manakah yang tepat untuk mengganti XXXX pada kode program di atas menurut
keterangan tabel tersebut ....
A. Char
B. Int
C. Float
D. Double
E. FloatChar

9. Data yang berisi sederet karakter disebut….


A. String
B. Array
C. Integer
D. Boolean
E. Float

10. Berikut ini output dari syntax program di bawah ini

Pemrograman Dasar Halaman 5 dari 21


#include<iostream>#include<conio.h>int main(){
int subme; char menu; atas: clrscr();
cout<<"_____________________________________________"<<endl;
cout<<"\t\tProgram luas bangun ruang"<<endl;
cout<<"_____________________________________________"<<endl;
cout<<"Pilih Menu Program \n";
cout<<"\n1. Luas Lingkaran\n";
cout<<"2. Luas Bujursangkar\n";
cout<<"3. Luas Segitiga\n";
cout<<"4. Luas Trapesium\n";
cout<<"5. Luas Layang-layang";
cout<<"\nPilih program yang akan dijalankan : ";
cin>>subme; switch (subme){
case 1: { xxxx r,L;
cout<<"_______________________________\n";
cout<<"\nInput jari-jari : ";
cin>>r;
L=3.14*r*r;
cout<<"Luas Lingkaran = "<<L<<endl; }break;
case 2: { xxxx s,L;
cout<<"_______________________________\n";
cout<<"\nInput sisi : ";
cin>>s;
L=s*s;
cout<<"Luas Bujursangkar = "<<L<<endl; }break;
case 3: { xxxx a,t,L;
cout<<"_______________________________\n";
cout<<"\nInput alas : ";
cin>>a;
cout<<"Input tinggi : ";
cin>>t;
L=a*t/2;
cout<<"Luas Segitiga : "<<L<<endl; }break;
case 4: { xxxx s1,s2,t,L;
cout<<"_______________________________\n";
cout<<"\nInput sisi ke-1 : ";
cin>>s1;
cout<<"Input sisi ke-2 : ";
cin>>s2;
cout<<"Input tinggi : ";
cin>>t;
L=s1*s2*t/2;
cout<<"Luas Trapesium : "<<L<<endl; }break;
case 5: { xxxx d1,d2,L;
cout<<"_______________________________\n";
cout<<"\nInput diagonal ke-1 : ";
cin>>d1;
cout<<"Input diagonal ke-2 : ";
cin>>d2;

Pemrograman Dasar Halaman 6 dari 21


L=d1*d2/2;
cout<<"Luas Layang-layang : "<<L<<endl; } break;}
cout<<"\n\nApakah akan mengulang kembali <y/n> ?"; cin>>menu;
if (menu == 'y'||menu=='Y')
{
goto atas;}
else{
cout<<"\nTerima Kasih sudah menggunakan program ini";}
getch ();}

Tentukan tipe data yang tepat untuk digunakan pada kode program di atas untuk menggantikan
XXXX agar berjalan sesuai dengan gambar output tersebut....
A. Char
B. Int
C. Float
D. Double
E. FloatChar

11. ++ dan -- merupakan operator....


A. Operator Aritmatika
B. Operator Increment dan Decrement
C. Operator Majemuk
D. Operator Relasional
E. Operator Logika

12. Operator logika yang menyatakan “atau” dalam lambang berikut ini adalah….
A. &&
B. ||
C. !
D. <>
E. =

13. Angga akan menghitung luas segitiga siku-siku yang diketahui alas dan tingginya. Pseudocode
yang paling tepat untuk menyelesaikan kasus tersebut adalah….
A.
Judul: Algoritma Luas Segitiga
Kamus:
alas,tinggi,luas : double
Algoritma:
Read alas
Read tinggi
luas = alas*tinggi*0.5
Read luas

Pemrograman Dasar Halaman 7 dari 21


B.

C.

D.

E.

14. Keluaran dari kode program berikut adalah….

A. Can drive
B. Can not Drive
C. Thank You
D. Can drive Thank You
E. Can not Drive Thank You

Pemrograman Dasar Halaman 8 dari 21


15. #include <conio.h>
#include <iostream.h>
#include <math.h>
#include <string.h>

void main ()
{
float a, b, s, P_A, P_B, AB, P_AB, P_AUB;
cout<<"Jumlah semua kejadian\t= "; cin>>s;
cout<<"Kejadian A\t\t= "; cin>>a;
cout<<"Kejadian B\t\t= "; cin>>b;
cout<<"=============================="<<endl;
P_A = a/s;
cout<<"P_A\t= "<<P_A<<endl;
P_B = b/s;
cout<<"P_B\t= "<<P_B<<endl;
AB = a-b;
cout<<"AB\t= "<<AB<<endl;
P_AB = a+b/s;
cout<<"P_AB\t= "<<P_AB<<endl;
P_AUB = P_A+P_B-P_AB;
cout<<"P_AUB\t= "<<P_AUB<<endl;
getch();
}

Jika jumlah semua kejadian adalah 4, nilai kejadian A adalah 2, dan nilai kejadian B adalah 2,
maka Peluang AB (P_AB) adalah….
A. 8
B. 4
C. 2
D. 1
E. 0

16. Perhatikan algoritma percabangan dengan pseudocode berikut!


Judul : Algoritma Membandingkan Dua Buah Nilai
Deklarasi:
A, B : integer
Algoritma:
Input (A,B)
If (A>B) then
Output (“Bilangan terbesar A”)
Else
If(A<B) then
Pemrograman Dasar Halaman 9 dari 21
Output (“Bilangan terbesar B”)
Else
Output (“Bilangan A dan B sama”)
Endif
Endif

Jika A diisi dengan nilai 30 dan B diisi dengan nilai 15, maka outputnya adalah….
A. Bilangan terbesar A
B. Bilangan terbesar B
C. Bilangan A dan B sama
D. Bilangan terkecil A
E. Bilangan terkecil B

17. Perhatikan struktur percabangan berikut!


If(x>0)
Cout << “x is positif”;
Else if(x<0)
Cout << “x is negative”;
Else
Cout <<”x is 0”;

Jika variabel diisi dengan nilai 5, maka outputnya adalah….


A. X is positif
B. X is negative
C. X is 0
D. Undefined
E. X is 15

18. Perhatikan kode program Java berikut!

Jika variabel warna diganti menjadi “kuning”, baris program yang dijalankan setelah baris ke-4
adalah…
Pemrograman Dasar Halaman 10 dari 21
A. Baris ke-5
B. Baris ke-7
C. Baris ke-9
D. Baris ke-10
E. Baris ke-13

19. Perhatikan algoritma perulangan berikut!


Judul : Algoritma Deret Bilangan
Deklarasi:
a : integer
Algoritma:
a 0
for (a  1; a<=5; a  a++)
End for
Output (a)
Output yang akan tampil adalah….
A. 1,2,3,4,5,6,7,8,9,10
B. 1,2,3,4,5,6,7
C. 1,2,3,4,5,6
D. 1,2,3,4,5
E. 1,2,3

20. Output yang diharapkan dari kode progam berikut adalah menampilkan kalimat “Welcome to
My World” sebanyak 100 kali; Struktur kontrol yang sesuai untuk menghasilkan output yang
diharapkan adalah….
A.

B.

C.

Pemrograman Dasar Halaman 11 dari 21


D.

E.
$input = 99;
Do {
print “Welcome to my World”;
$input –= 1;
}
While(input>=0);

21. Pada gambar flowchart berikut, struktur perulangan jenis apakah yang digunakan?

Mulai
A. Perulangan dengan 1 kondisi
B. Perulangan dengan 2 kondisi
Salah
Kondisi C. Perulangan dengan lebih dari 2 kondisi
D. Perulangan bersarang
Benar
E. Tidak ditemukan kondisi perulangan
Proses

Selesai

22. Sebuah perusahaan pemutaran film memiliki aturan yang dapat menonton film hanya bagi
penonton yang berusia 17 tahun atau lebih yang ditunjukan oleh flowchart dibawah ini!
Jika ada penonton yang lahir pada tahun 2004 maka
output yang ditunjukan oleh flowchart di samping
adalah …
A. Tidak Boleh Menonton
B. X
C. Kosong
D. Boleh Menonton
E. Error

Pemrograman Dasar Halaman 12 dari 21


23. Perhatikan kode dibawah ini!
#include <iostream> Output yang memungkinkan untuk opsi A dan B
#include <string.h> berurutan adalah …
using namespace std;
int main(){ A. Ganjil - Genap
int angka=7; B. Genap - Ganjil
char hasil[50];
if (angka % 2 == 0) C. Benar - Salah
strcpy(hasil, … A … )
else
D. Salah - Benar
strcpy(hasil, ... B … ) E. Cacah - Bulat
cout<<”Jenis Bilangan Untuk Angka “;
cout<<angka<<” adalah = “<<hasil;
return 0 ;
}

24. Perhatikan kode dibawah ini!


#include <iostream> Hasil dari contoh kasus pengulangan di samping
using namespace std; merupakan …
int main(){
int bilangan=10; A. Nomor berurut menaik sampai 10
do B. Nomor berurut menurun dari 10
{
cout << bilangan << “,“ ; C. Bilangan genap menaik sampai 10
bilangan -=2;
}
D. Bilangan genap menurun dari 10
While (bilangan>1); E. Bilangan Ganjil menurun dari 10
return 0 ;
}

25. Di bawah ini perintah pengulangan decrement yang benar adalah …

int data=10;
A. do
{
cout << data << “,“ ;
data ++ ;
}
While (data>1);

int data=10;
B. do
{
cout << data << “,“ ;
data ++ ;
}
While (data<1);

Pemrograman Dasar Halaman 13 dari 21


int data=10;
C. While (data<1)
{
cout << data << “,“ ;
++ data ;
}

D. For (data = 1 ; data <= 10 ; data ++)

E. For (data = 10 ; data >= 1 ; data - - )

26. Perhatikan kode di bawah ini!


#include <iostream> Untuk mendapatkan output dari kode disamping,
using namespace std; perintah untuk melengkapi kode X adalah …
int main(){
A. Continue ;
int nilai ;
For (nilai = 1; nilai <=10 ; nilai ++) B. Break ;
{ C. Strcat ;
If (nilai ==6)
……. X ……. D. Strcmp ;
cout << nilai << “,”; E. Clrscr ;
}
return 0;
}

Output : 1,2,3,4,5,7,8,9,10

27. Kode program berikut yang menunjukkan struktur pengulangan dengan kondisi di akhir
adalah….
A.

B.

C.

Pemrograman Dasar Halaman 14 dari 21


D.

E.

28. Struktur control perulangan sebagai pencacah naik ,syarat tipe data variable pencacah adalah…
A. Dapat Dihitung
B. Tipe data apa saja
C. Harus Integer
D. Bilangan real
E. Karakter

29. Struktur perulangan sebagai pencacah turun Berikut ini pernyataan yang benar mengenai
algoritma perulangan dengan pencacah turun ,kecuali….
A. Dapat dikonversikan dalam bentuk WHILE DO
B. Dapat menggunakan variable bertipe data karakter sebagai pencacah
C. Banyaknya iterasi sudah ditentukan
D. Tidak dapat diubah dalam bentuk pencacah naik
E. Dapat digunakan sebagai algoritma untuk menentukan baris bilangan

30. Jika <kondisi> bernilai benar maka pernyataan1 dikerjakan. Sedangkan jika tidak
(<kondisi>bernilai salah), maka pernyataan yang dikerjakan adalah pernyataan2. Hal tersebut
adalah penjelasan dari percabangan…
A. 1 Kondisi
B. 2 Kondisi
C. Lebih dari 2 kondisi
D. Percabangan bersarang
E. Perulangan

31. Struktur perulangan dengan kondisi diakhir penggunaan REPEAT UNTIL adalah struktur
perulangan dengan….
A. Kondisi di awal
B. Kondisi di akhir
C. 1 Kondisi
D. 2 Kondisi
E. Lebih dari 2 kondisi

Pemrograman Dasar Halaman 15 dari 21


32. Cermatilah kode program array berikut!
#include <stdio.h>
#include <iostream.h>
main()
{
int tahun_produksi, kode;
int data_produksi[3][3];
data_produksi[0][0] = 10;
data_produksi[0][1] = 35;
data_produksi[0][2] = 30;
data_produksi[2][0] = 40;
data_produksi[2][1] = 70;
data_produksi[2][2] = 60;
data_produksi[1][0] = 75;
data_produksi[1][1] = 80;
data_produksi[1][2] = 95;
cout<< "MASUKAN TAHUN PRODUKSI [2016-2018] : ";
cin >> tahun_produksi;
cout << "\n DAFTAR BARANG \n";
cout << "\n =================\n";
cout << "\n 1.KARET \n";
cout << "\n 2.KERTAS \n";
cout << "\n 3.PLASTIK \n";
cout << "\n KD BARANG YG DIPILIH [1..3] : ";
cin >> kode;
cout<< " \n TOTAL Penjualan Kode Barang = " ;
cout<< kode;
cout<<" dengan Tahun Produksi ";
cout<<tahun_produksi ;
cout<< " adalah ";
cout<< data_produksi[kode-1][tahun_produksi-2016];
}

Total Penjualan Kertas dengan Tahun Produksi 2017 adalah


A. 35
B. 70
C. 80
D. 40
E. 60

Pemrograman Dasar Halaman 16 dari 21


33. Pak Guru Adi akan menghitung nilai rata-rata 5 orang siswa, operasi perhitungan nilai yang
benar adalah ...
A.

B.

C.

D.

E.

34. Perhatikan deklarasi array berikut

Elemen array bungawarna pada indeks [1][2] adalah….


A. Melati
B. Ungu
C. Mawar
D. Putih
E. Anggrek

35. Cermatilah kode program array berikut!


#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
void main()
{
clrscr();
int i, j, find;
int data[]= {5, 20, 31, 21, 56, 1};
cout << "Data yang dicari :" << endl;
cin >> j;
find=0;
for (i=0; i< sizeof(data)/sizeof(int); i++)
{
if (data[i] == j) {

Pemrograman Dasar Halaman 17 dari 21


find=!find;
break; }
}
if (find)
cout << " Data tersebut ada pada posisi ke- " << i+1 << endl;
else
cout << " Data tersebut tidak ada!" << endl;
}

Maka pernyataan yang benar untuk tipe data array yang digunakan adalah…
A. int data[2]= {5, 20, 31, 21, 56, 1};
B. int data[3]= {5, 20, 31, 21, 56, 1};
C. int data[4]= {5, 20, 31, 21, 56, 1};
D. int data[5]= {5, 20, 31, 21, 56, 1};
E. int data[6]= {5, 20, 31, 21, 56, 1};

36. Yustin ingin menghitung volum silinder, ia hanya memiliki nilai diameter dan tinggi dari
silinder tersebut. Fungsi yang sesuai untuk membantu Yustin adalah, kecuali….
A.

B.

Pemrograman Dasar Halaman 18 dari 21


C.

D.

E.

37. Penjelasan yang paling tepat dari deklarasi berikut: int aksi (int x, int y) adalah…
A. fungsi aksi() mempunyai sebuah argumen bertipe integer

Pemrograman Dasar Halaman 19 dari 21


B. fungsi aksi() mempunyai sebuah argumen bertipe long integer
C. fungsi aksi() mempunyai dua buah argumen, dengan masing-masing argumen bertipe
integer
D. fungsi aksi() mempunyai dua buah argumen, dengan masing-masing argumen bertipe long
integer
E. fungsi aksi() mempunyai tiga buah argumen, dengan masing-masing argumen bertipe
integer

38. Perhatikan cuplikan kode berikut

Tentukan pasangan nilai input dan output yang sesuai…


A. Input: a=1 , b=2 Output: result=3
B. Input: a=1 , b=2 Output: result=5
C. Input: a=3 , b=4 Output: result=5
D. Input: a=3 , b=4 Output: result=14
E. Input: a=3 , b=4 Output: result=25

39. Hasil keluaran dari fungsi berikut, jika nilai panjang adalah 6 dan lebar adalah 8 adalah…
#include <iostream>
using namespace std;
void Luas()
{
int panjang,lebar;
cout << "Masukkan panjang: "; cin >> panjang;
cout << "Masukkan lebar: "; cin >> lebar;
cout<<"Luas Persegi Panjang: " << panjang*lebar;
}
int main()
{
Luas();
return 0;
}

A. 0.75
B. 14
C. 24
D. 48
E. 96

Pemrograman Dasar Halaman 20 dari 21


40. Dari skrip berikut, metode fungsi apakah yang digunakan?
#include <iostream>
using namespace std;
int LuasPersegi (int p, int l){
int luas;
luas = p*l;
return luas;
}
int main()
{
int a,b;
cout << "Masukkan panjang: "; cin >> a;
cout << "Masukkan lebar: "; cin >> b;

cout << "Luas Persegi: " << LuasPersegi(a,b);


return 0;
}

A. void
B. return
C. parameter
D. parallel
E. prototype

Pemrograman Dasar Halaman 21 dari 21

Anda mungkin juga menyukai