Category

Friday, August 20, 2021

CONTOH SOAL DAN JAWABAN MATA KULIAH DESAIN ANALISIS ALGORITMA

 A. Pertanyaan :

1.     Apakah yang dimaksud dengan algoritma?

Berikan satu contoh algoritma dalam kehidupan sehari-hari!

2.     Terdapat dua buah gelas berukuran sama, tetapi masing-masing berisi cairan yang berbeda. Tuliskan solusi algoritmik untuk menukarkan isi cairan dari kedua buah gelas tersebut!

3.     Tuliskan solusi algoritmik untuk permasalahan berikut :

Diberikan dua buah ember berukuran 5 liter dan 3 liter. Bagaimana cara mendapatkan air berukuran 1 liter dengan kedua ember tersebut?

4.     Jelaskan keuntungan proses eksekusi dengan struktur kondisional bersarang (nested conditional)!

5.     Jelaskan perbedaan mendasar tiga struktur pengulangan (looping): for, repeat-until dan while-do!

6.     Jelaskan perbedaan fungsi dan prosedur dalam pemrograman!

7.     Bagaimanakah cara merepresentasikan polinom berderajat N (axn + bxn-1 + … + z) dalam pemrograman?

8.     Cenderung setujukah anda dengan pernyataan: Komputer lebih pintar dari manusia? Berikan alasannya!

 

B.    Jawaban

1.     Pengertian Algoritma dan Contohnya dalam Kehidupan Sehari-hari

Algoritma adalah suatu langkah-langkah yang logis dan terstruktur yang dipergunakan untuk menyelesaikan permasalahan yang disusun secara sistematis.

 Contoh algoritma :

·       Algoritma Membuat Jus Apel

1.     Siapkan bahan-bahan pembuatan Jus apel seperti Apel, gula, es batu, air 250cc

2.     Siapkan blender, pisau, sendok dan gelas untuk tempat jus apel.

3.     Potong apel menjadi 4 bagian per buah

4.     Masukkan 12 potong apel, 1 sendok teh gula, air 150cc, dan es batu ke dalam blender.

5.     Blender bahan-bahan tersebut dengan putaran blender maksimal selama 2 menit

6.     Setelah 2 menit, atur blender ke mode putaran paling lambat selama 1 menit

7.     Setelah tercampur rata tuangkan jus apel ke dalam gelas sesuai selera

 

2.     Dalam permasalahan tersebut, diperlukan gelas ke-3 untuk membantu dalam proses penukaran cairan dari masing-masing gelas. Algoritmanya sebagai berikut :         

asumsi :

Gelas A = gelas pertama dengan cairan oli

Gelas B = gelas kedua dengan cairan minyak

Gelas C = gelas kosong

1.     Tuangkan cairan oli yang berada di gelas a kedalam gelas c.

2.     Tuangkan cairan minyak yang berada pada gelas b kedalam gelas a

3.     Kemudian, cairan oli yang berada di gelas c dituangkan kedalam gelas b

3.     Pada permasalahan ini terdapat ember dengan ukuran 5 liter dan 3 liter dengan tujuan untuk mendapatkan air sebanyak 1 liter.

Algoritmanya:

1.     Isi ember yang ukuranya 3 liter dengan air secara penuh

2.     Tuangkan isi ember 3 liter kedalam ember yang ukurannya 5 liter

3.     Selanjutnya, isi lagi ember yang ukurannya 3 liter dengan air secara penuh

4.     Tuangkan isi ember 3 liter kedalam ember ukuran 5 liter hingga ember yang berukuran 5 liter penuh

5.     Maka akan didapatkan air sisa pada ember yang berukuran 5 liter sebanyak 1 liter air

4.     Keuntungan dari proses eksekusi dari kondisi bersarang (nested) adalah dalam eksekusi, khususnya untuk kondisi bersarang (if-else), jika kondisi memenuhi syarat, maka perintah akan dikerjakan dan sebaliknya, jika kondisi salah, maka perintah tidak dikerjakan. Dalam pernyataannya, pembuatan program khususnya program yang menggunakan kondisi yang banyak, diperlukan adanya code yang mendukungnya contohnya kondisi bersarang (if-else).

Intinya, kondisi bersarang ini dapat menyisipkan pernyataan dalam pernyataan, sehingga hasil dari konsep tersebut akan mengkhusus dan tergantung dengan kondisinya.

Selain itu, kondisi berasang jika dieksekusi lebih ringan dibandingkan kondisi yang tidak bersarang. Hal ini dikarenakan kondisi yang tidak bersarang akan semua dieksekusi, sehingga akan mengakibatkan program yang lebih lambat. Berbeda dengan kondisi yang bersarang, yang dieksekusi jika statemennya bernilai benar sehingga waktu untuk mengeksekusi codenya lebih singkat.

 

5.     Perbedaan for, repeat-until, dan while-do

·       FOR

Pernyataan for adalah konstruksi pengulangan tanpa kondisi artinya instruksi-instruksi di dalam badan pengulangan diulangi sejumalah kali yang di perintahkan oleh pembuat program. Dalam hal ini, banyaknya pengulangan sudah ditentukan sebelum konstruksi pengulangan eksekusi. Perulangan dengan pernyataan FOR digunakan untuk mengulang pernyataan/satu blok pernyataan berulanng kali sejumlah yang ditentukan. Jumlah pengulangan diketahui atau dapat ditentukan sebelum eksekusi. Untuk mencacah beberapa kali pengulangan diperlukan sebuah peubah (variable) pencacah (counter). Peubah ini nilainya selau bertambah 1 setiap kali pengulangan dilakukan.. Proses pengulangan akan berhenti pada saat counter mencapai jumlah yang dispesifikasikan

 

Algoritma FOR:

for (kondisi)

{

      aksi;

}

 

 

 

·       REPEAT

 

REPEAT biasanya digunakan jika jumlah pengulangan belum dapat ditentukan pada saat program ditulis. Algoritma REPEAT:

repeat

       aksi  

until kondisi

 

Repeat-until (ulangi sampai)  adalah struktur pengulangan dimana aksi dilakukan hingga kondisi (persyaratan) terpenuhi. Perulangan Repeat – Until hampir sama dengan While – do, perbedaannya hanyalah letak pengecekan kondisi. Jika pada while – do pengecekan berada pada awal blok pernyataan yang harus diulang, maka pada repeat – until kondisi dicek pada akhir blok pernyataan yang harus diulang. Perbedaan lainnya adalah pernyataan while – do mengulang pernyataan selama kondisi masih terpenuhi, tetapi pernyataan repeat – until hanya akan mengulang pernyataan selama kondisi belum terpenuhi.

Pada repeat-until jumlah pengulangan tidak dapat diketahui dari awal. Karena pengulangan aksi akan terus dilakukan sampai ditemukan entry dari apa yang menjadi syarat sudah terlampaui.

 

·       WHILE

While berarti selagi/ selama dan do berarti lakukan. Jadi, while-do artinya struktur pengulangan dimana selama kondisi (persyaratan) pengulangan masih benar, maka aksi dikerjakan.

Algoritma WHILE :

while kondisi do

           aksi

endwhile

Program akan menguji nilai <kondisi>. Jika <kondisi> bernilai false, maka <pernyataan> tidak dilaksanakan dan program menghentikan pengulangan, kemudian menjalankan baris berikutnya. Jika <kondisi> berniai true, maka pernyataan akan dilaksanakan satu kali. Kembali ke prosedur 1. Program menghentikan perulangan dan menjalankan baris berikutnya.

Pada while-do kondisi pengulangan di evakuasi di awal pengulangan, berbeda dengan repeat-until kondisi pengulangan di evakuasi di akhir.

 

6.     Perbedaan fungsi dan procedure

Pada prosedur nilai yang diproses tidak dikembalikan atau diubah, nilai hanya diproses didalam prosedur dan kembali kepada keadaan semula ketika keluar dari prosedur. Sedangkan pada fungsi, nilai yang diproses akan berubah dan memiliki nilai keluaran. Bisa kita disimpulkan bahwa prosedur itu hanya berisi metode/langkah-langkah penyelesaian masalah sedangkan fungsi adalah berisi metode yang memproses nilai dan mengubah nilai itu sendiri.

7.     Berikut adalah implementasi polinom berderajat n dalam program.

Nama Program: Program Aritmatika Polinom

Bahasa Pemrogramam : C++

1   void penjumlahan(int a[],int b[],int c,int e)

2   {

3        int k,l;

4        if(c<=e) l=e; else l=c;

5        if(l==c)

6        {

7           k=e+1;

8        for( ;k<=l;k++)

9        {

10         b[k]=0;

11              }

12      }

13      else if(l==e)

14      {

15         k=c+1;

16         for( ;k<=l;k++)

17         {

18           a[k]=0;

19         }

20      } int z;

21      for(z=0;z<=l;z++)

22      {

23         a[z]=a[z]+b[z];

24      }

25      for(z=0;z<=l;z++)

26      {

27        if(z!=l)

28        {

29          cout<<a[z]<<"x^"<<z<<"+";

30        }

31        else

32        {

33          cout<<a[z]<<"x^"<<z;

34        }

35        cout<<endl;

36 }

37 void pengurangan(int a[],int b[],int e,int c)

38 {

39      int k,l;

40      if(c<=e)

41      l=e;

42      else l=c;

43      if(l==c)

44      {

45         k=e+1;

46         for( ;k<=l;

47         k++)

48         {

49           b[k]=0;

50         }

51      }

52      else

53      if(l==e)

54      {

55        k=c+1;

56        for( ;k<=l;k++)

57        {

58          a[k]=0;

59        }

60      }

61      int z;

62      for(z=0;z<=l;z++)

63      {

64        a[z]=a[z]-b[z];

65      }

66      for(z=0;z<=l;z++)

67      if(z!=l)

68      {

69        cout<<a[z]<<"x^"<<z<<"+";

70      }

71      else

72      {

73        cout<<a[z]<<"x^"<<z;

74      }

75      cout<<endl;

76 }

77 void perkalian(int a[],int b[],int c,int e)

78 {

79      int f,g,h[21],i=0,j[21];

80      for(f=0;f<=c;f++)

81      for(g=0;g<=e;g++)

82      {

83        h[i]=b[g]*a[f];

84        j[i]=f+g; i++;

85      }

86        for(f=0;f<i;f++)

87        {

88          if(f!=i-1)

89          {

90            cout<<h[f]<<"x^"<<j[f]<<"+";

91          }

92          else

93          {

94            cout<<h[f]<<"x^"<<j[f];

95          }

96        } cout<<endl;

97 }

98 void turunan(int a[],int b[],int c,int e)

99 {

100             int f;

101             for(f=0;

102             f<=c;f++)

103             {

104               a[f]=a[f+1]*(f+1);

105             }

106               cout<<"turunan polinom pertama adalah: "<<" ";

107               for(f=0;f<c;f++)

108               {

109                 if(f!=c-1)

110                 {

111                   cout<<a[f]<<"x^"<<f<<"+";

112                 }

113                 else

114                 {

115                   cout<<a[f]<<"x^"<<f;

116                 }

117               }

118               for(f=0;f<=e;f++)

119               {

120                 b[f]=b[f+1]*(f+1);

121               }

122               cout<<endl<<endl<<"turunan polinom kedua          adalah: "<<" ";

123               for(f=0;f<e;f++)

124               {

125                 if(f!=e-1)

126                 {

127                   cout<<b[f]<<"x^"<<f<<"+";

128                 }

129                 else

130                 {

131                   cout<<b[f]<<"x^"<<f;

132                 }

133               }

134               cout<<endl;

135        }

136        void salah()

137        {

138          cout<<"Maaf menu tidak tersedia,pilih menu yang tersedia!"<<endl;

139        }

140        int main()

141        {

142          char jawab;

143          do

144          {

145            int a[21],b[21],c,d,e,f;

146            cout<<"Masukkan Polinom Pertama, Tekan Sembarang Tombol Unuk Melanjutkan"<<endl;

147            getch();

148            cout<<"\nMasukkan Derajat Tertinggi Polinom Pertama: ";

149            cin>>c; cout<<"\nMasukkan Koofisien x Mulai Dari x Pangkat 0, Tekan Sembarang Tombol Untuk Melanjutkan"<<endl;

150            getch();

151            for(d=0;d<=c;d++)

152            {

153              cout<<"\nKoofisien x Pangkat "<<d<<" : ";

154              cin>>a[d]; cout<<endl;

155            }

156            cout<<"Masukkan Polinom Kedua, Tekan Sembarang Tombol Untuk Melanjutkan"<<endl;

157            getch();

158            cout<<"\nMasukkan Derajat Tertinggi Polinom Kedua: ";

159            cin>>e;

160            cout<<"\nMasukkan Koofisien x Mulai dari x Pangkat 0, Tekan Sembarang Tombol Untuk Melanjutkan"<<endl;

161            getch();

162            for(d=0;d<=e;d++)

163            {

164              cout<<"\nKoofisien x Pangkat "<<d<<" : ";

165              cin>>b[d]; cout<<endl;

166            }

167            cout<<"1. PENJUMLAHAN \n2. PENGURANGAN \n3. PERKALIAN \n4. TURUNAN"<<endl;

168            cout<<"\nMasukkan Kode Operasi : ";

169            cin>>f; switch(f)

170            {

171              case 1:

172              {

173                 penjumlahan(a,b,e,c);

174                 break;

175              }

176              case 2:

177              {

178                pengurangan(a,b,e,c);

179                break;

180              }

181              case 3:

182              {

183                perkalian(a,b,c,e);

184                break;

185              }

186              case 4:

187              {

188                turunan(a,b,c,e);

189                break;

190              }

191              default:

192              {

193                salah();

194                break;

195              }

196            }

197            printf("\n Apakah anda ingin mengulang ? [y/t] ");

198            scanf("%s",&jawab);

199          } while ((jawab=='Y' || jawab=='y'));

200          printf("\n\n\t\t\t\tTERIMA KASIH");

201        }

 

 

8.     Saya tidak setuju dengan pernyataan tersebut. Menurut saya manusia lebih pintar daripada komputer. Komputer hanya unggul dalam kecepatan pemrosesan secara matematis dan juga dalam masalah mengingat komputer mempunya kemampuan yang lebih tetapi jika data tersebut dihapus komputer tidak dapat mengingatnya kembali. Sedangkan dalam hal pengambilan keputusan komputer masih kalah dari manusia. Komputer juga tidak bisa belajar sendiri kecuali manusia menambah programnya. Selain itu, Komputer lahir dan dapat beroperasi juga  karena manusia. Jadi sebenarnya otak manusialah yang lebih pintar dari Komputer, namun dengan perkembangan teknologi Artificial Intelligence yang pesat tidak menutup kemungkinan di masa depan komputer akan lebih cerdas dari manusia. Namun untuk masa sekarang manusia lebih unggul dari komputer karena komputer bekerja di bawah kendali manusia.

           

No comments:

Post a Comment