latest Post

Soal-soal pemograman

1 Yang manakah dievaluasi pertama:
a. &&
b. ||
c. !
2 Apakah hasil dari 7/9*9
a. 1
b. 0.08642
c. 0
3 Index Array selalu mulai dengan nomer
a. 0
b. 1
c. 2
d. \0
4 Nama dari sebuah variable dikenal sebagai
a. identifier
b. konstatnta
c. type data
d. base
5 Apakah ststemen berikut valid? double price = 7,450.98;
a. Benar
b. Salah
6 Apakah perbedaan c++ dan ++c?
C++ :  lakukan operasi terhadap C dahulu, bilangan berikutnya baru ditambah 1
++C :  jumlahkan C dengan 1 (awalnya sudah di tambah 1), baru kemudian operasi terhadap C dilakukan
7 Semua variabel harus dideklarasi sebelum digunakan
a. Salah
b. Benar
8 Apakah yang salah? for (int k = 2, k <=12, k++)
for (int k = 2; k <=12; k++)
a. increment seharusnya ++k
b. variable harus selalu menggunakan huruf I untuk foor loop
c. sebaiknya ada senikolon pada akhir statemen
d. koma sebaiknya diganti dengan semicolon
9 Apakah yang salah? while( (i < 10) && (i > 24))
a. logical operator && tidak dapat digunakan dalam tes kondisi
b. while loop merupakan exit-condition loop
c. tes kondisi ini sealu salah
d. tes kondisi ini sealu benar
10 Jika ada lebih dari satu statemen dalam sebuah blok dalam sebuah loop for, yang manakah dari berikut harus ditempatkan pada awal dan akhir blok loop?
a. parentheses ( )
b. braces { }
c. brackets [ ]
d. arrows < >
11 Apakah yang salah? (x = 4 && y = 5) ? (a = 5) ; (b = 6);

a. Tanda Tanya seharusnya diganti dengan tanda (equal sign)
b. Semicolon pertama seharusnya colon
c. Ada sangat banyak variable dalam statemen
d. conditional operator hanya digunakan dengan apstrings
12 Ketika menggunakan sebuah built-in function (fungsi bawaan) seharusnya
a. include function's prototype.                                                                                           b. include header file yang sesuai
c. include function's definition.
d. menetapkan panjang library function

13 Apakah yang dicetak pada masing masing statement C++ berikut, jika tidak ada katakan "tidak ada". Anggaplah x=2 dan y=3
a. cout « x;
2

b. cout « x + x;
4

c. cout « " x= ";
x=

d. cout « " x = " « x;
x = 2

e. cout « x + y « "=" « y + x;
5=5

f. z = x + y;
Tidak Ada

g. cin » x » y;
Tidak Ada

h. //cou t « "x + Y=" « x + y;
Tidak Ada

i. cout « " \ n ";
Tidak Ada

14 Identifikasi dan perbaiki kesalahan dari bagian program berikut:
          salah
a.     While (c <= 5 )
   product *= c;
   c++;

benar
a.     int product=1;
int c=1 ;
while (c <= 5 )
   {
product *= c;
  c++;
}
-         variabel produk tidak diisi ; ini menyebabkan produk *= c menjadi gagal – int produk harus diberi nilai, seperti 1
-         karna ada dua pernyataan di dalam loop sehingga kurung kurawal {} harus diisi
-         While diubah menjadi while (w huruf kecil )
 
salah
b.    cin<<value;
 
benar
cin>>value
symbol input seharusnya (>>) 
 
salah
c.if (gender ==1) 
cout<<"woman"<<endl;
else;
cout<<"man"<<endl;

benar
if (gender ==1)
cout<<"woman"<<endl;
else
cout<<"man"<<endl;
-         hilangkan tanda semicolon pada else (;)
-         boleh tidak memberi kurung kurawal {}, karna hanya ada 1 pernyataan pada 1 kondisi
15 Apakah yang salah dari struktur repetisi while berikut:
while (z >=0 )
sum += z;
Nilai dari variabel z tidak akan berubah. Oleh karena itu , jika kondisi loop ( z > = 0 ) adalah benar ,maka infinite loop akan dibuat . Untuk mencegah loop tak terbatas , z harus dikurangi, sehingga menjadi kurang dari 0

16 Apakah pernyataan berikut benar atau salah
a.     ekspresi (x>y&&a<b) adalah benar jika ekspresi x>y benar atau a<b benar
pernyataan benar
b.     ekspresi yang mengandung operator || adalah benar jika kedua operan benar
pernyataan salah

17 Temukan kesalahan pada masing-masing kode berikut dan jelaskan bagaimana memperbaikinya

a.     x = 1;
while (x <= 10);
x++;
}
benar
int x = 1;
while (x <= 10) {
x++;
}

-         hilangkan semicolon di akhir while
-         beri tanda kurung kurawal pada awal statement

b.     for (y=.1; y !=1.0; y+=.1)
cout<< y<<endl;
benar
for (float y=.1; y <1.0; y+=.1)
cout<< y<<endl;
-         gunakan float sebagai tipe data y, karna nilai y berwujud decimal.
-         ubah  != dengan < sehingga hasilnya akan mengeluarkan deret nilai dari 0.1 sampai 1.0

c.      switch(n) {
          case 1 :
                   cout<< "The number is 1"<< endl;
          case 2 :
                   cout<< "The number is 2"<< endl;
                   break;
          default:
                   cout<< "The number is not 1 and 2"<< endl;
                   break;
benar
switch(n) {
          case 1 :
                   {
                   cout<< "The number is 1"<< endl;
                   break;}
          case 2 :
                   {
                   cout<< "The number is 2"<< endl;
                   break;}
          default:
                   {
                   cout<< "The number is not 1 and 2"<< endl;
                   break;}

- beri tanda kurung kurawal {} pada setiap statement
- tambahkan break; pada akhir case 1

d.     Kode berikut seharusnya mencetak nilai dari 1 sampai 10
n=1;
while(n<10)
cout<<n++<<endl;

benar
int n=1;
while(n<=10)
cout<<n++<<endl;
-         gunakan tipe data int pada n
-         ubah tanda < menjadi <= agar nilai yang keluar sampai dengan angka 10

18 Temukan kesalahan pada masing-masing kode berikut dan jelaskan bagaimana memperbaikinya
a)       int sum (int x, int y)
{
          int result;
          result = x + y;
}       

benar    
int sum (int x, int y) {
           int result;
            result = x + y;
            return result;
      }
result adalah variable local. Fungsi pemanggil tidak bisa menggunakan result. Jadi beri pernyataan return.

b)      int sum (int n)
{
if (n==0)
return 0;
else
n +sum (n-1);
}

benar
int sum (int n);
{
if (n==0)
return 0;
else
return n + sum(n-1);   // sum(n) = sum(n-1)+n
}
-         tambah pernyataan return 

19 Temukan kesalahan pada masing-masing statement berikut
a.     Anggaplah: char str [ 5 ] ;
char str [ 5 ] ;
cin>> str; // User mengetik "he l l o"
         
benar
          char str[5] ;
cin.getline(str,5);
-         gunakan cin.getline untuk fungsi string input dan tambahkan str, dan panjang str.
-         beri header #include <string.h>


b. Anggaplah: int a[3] ;
cout « a [ 1 ] << " " << a [ 2 ] << " " << a [ 3 ] < < endl ;    

benar
cout « a [ 0 ] << " " << a [ 1 ] << " " << a [ 2 ] < < endl ;
-         array dinyatakan memiliki tiga element , [ 3 ] bukan bagian dari array , karena deklarasi array adalah dari 0 sampai 2. Untuk memiliki [ 3 ] dalam array , kita harus mendeklarasikan array menjadi empat element .


b.     double f [ 3 ] = {1.1, 10.01, 100.001, 1000.0001 };

benar
double f [ 3 ] = {1.1, 10.01, 100.001};
-         Karena array dideklarasikan dengan tiga elemen , array tidak dapat diisi dengan empat nilai . Untuk mengatasi masalah, elemen terakhir harus dihapus .

d. Anggaplah: double d[ 2 ] [ 10 ];
d [ 1, 9 ] = 2.345 ;

benar
d [1][9] = 2.345 ;
-         karna ini adalah array 2 dimensi , antara baris dan kolom  harus dipisahkan oleh tanda kurung siku , bukan koma .

20 Temukan kesalahan pada masing-masing segment berikut, jika kesalahan dapat diperbaiki bagaiamana caranya
a.      int *number;
cout << number << endl;
Kesalahan : mencetak nilai pointer yang tidak menunjuk kemanapun .
Koreksi : tambahkan alamat pada variabel integer untuk number 
 
b.     double *realPtr;
long
 *integerPtr;
integerPtr = realPtr;
Kesalahan : Dua pointer yang berbeda tipe diperbandingkan .
Koreksi : Deklarasikan pointer dari jenis yang sama .
 
c.      int * x, y;
x = y;
Kesalahan : Ada spasi antara tipe data dan nama variabel .
Koreksi : ubah  statement int * x , y ; menjadi  int* x , y ;
d.     char s[] = "this is a character array";
for( ; *s !=
 '\0'; s++ ) 
     cout << *s << ' ';
Kesalahan : Pointer aritmatika digunakan dalam array tanpa menempatkan alamat dari array di pointer manapun .
 
Koreksi : (Ada dua koreksi )
Menggunakan subscript array 
    for (int i = 0 ; s [ i ] = ' \ 0 ' ; ! i ++ ) cout << s [ i ] << ' ' ;
Metode kedua adalah menetapkan alamat dari array ke pointer , 
char * sPtr = s ;
    untuk ( ; * sPtr = ' \ 0 '; ! sPtr ++ ) cout << * sPtr << ' ' ;
e.      short *numPtr, result;
void
 *genericPtr = numPtr;
result = *genericPtr +
 7;
tidak ada kesalahan
f.       double x = 19.34;
double
 xPtr = &x;
     cout << xPtr << endl;
Kesalahan : tanda bintang ( * ) tidak digunakan dalam pointer deklarasi .
Koreksi : Mengubah pernyataan double xPtr menjadi double* xPtr ;
g.     char *s;
cout << s << endl;
Kesalahan : mencetak nilai pointer yang tidak menunjuk ke manapun
Koreksi : Menetapkan alamat dari char s .





Soal dibawah ditulis dengan tinta warna
Buatlah sebuah fungsi dengan menggunakan pointer yang menyalin sebuah array seperti berikut:
11.1 33.3 44.4 55.5 66.6 77.7 88.8 99.9
22.2 33.3 44.4 22.2 66.6 77.7 11.1 99.9
22.2 11.1 44.4 55.5 66.6 77.7 88.8 11.1

#include <iostream>
using namespace std;
int main()
{
float A[8]={11.1, 33.3, 44.4, 55.5, 66.6, 77.7, 88.8, 99.9 };
float B[8]={22.2, 33.3, 44.4, 22.2, 66.6, 77.7, 11.1, 99.9 };
float C[8]={22.2, 11.1, 44.4, 55.5, 66.6, 77.7, 88.8, 11.1 };

int i;
float*aptr,*bptr,*cptr;
aptr=A;
bptr=B;
cptr=C;

for (i=0; i<8; i++){
          cout<<*aptr<<"  ";
          *aptr++;
}

cout<<endl;
for (i=0; i<8; i++){
          cout<<*bptr<<"  ";
          *bptr++;
}

cout<<endl;
for (i=0; i<8; i++){
          cout<<*cptr<<"  ";
          *cptr++;
}
return 0;

}

About Unknown

Unknown
Recommended Posts × +

0 comments:

Post a Comment