TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah 2 Dosen: Abdillah, S.Si, MIT Email: abdill01@gmail.com Website: http://abdill01.wordpress.com
Tujuan Mahasiswa mampu menyelesaikan masalah berdasar contoh algoritma penyelesaian masalah dan listing programnya.
1. Menentukan Perpangkatan Buatlah algoritma dan program C yang membaca nilai x dan y kemudian memanggil fungsi pangkat yang menghitung perpangkatan xy dan mengembalikan nilai xy. Program juga menampilkan nilai xy tersebut di layar monitor
Algoritma PROGRAM Hitung_Pangkat { Program yang menghitung nilai x pangkat y } DEKLARASI x : integer function Pangkat (input x : integer) → integer ALGORITMA: read (x) write (xy = Pangkat(x))
Algoritma function Pangkat (input x : integer) → integer { Menghitung nilai x pangkat y } DEKLARASI i,y, pangkat: integer ALGORITMA: read (y) pangkat ← 1 for (i←1 to y) do pangkat ← pangkat * x i ← i + 1 return pangkat;
#include <stdio.h> int Pangkat(int x); void main() { int x; printf("x = "); scanf("%d", &x); printf("x pangkat y = %d \n", Pangkat(x)); } int Pangkat(int x) /* Mengembalikan nilai x pangkat y */ int i,y,pangkat = 1; printf("y = "); scanf("%d", &y); for (i=1; i<=y;i++) pangkat = pangkat * x; return pangkat;
2. Menghitung Deret Buatlah algoritma dan program C yang membaca nilai N kemudian memanggil fungsi deret yang menghitung 1 + 2 + 3 + ... + N dan mengembalikan nilai penjumlahan deret. Program juga menampilkan nilai penjumlahan deret tersebut di layar monitor.
Algoritma PROGRAM Hitung_Deret { Program yang menghitung nilai deret } DEKLARASI N : integer function Deret (input N : integer) → integer ALGORITMA: read (N) write (Jumlah deret N = Deret(N))
Algoritma function Deret (input N : integer) → integer { Menghitung nilai deret N } DEKLARASI i, deret : integer ALGORITMA: deret ← 0; for (i←1 to N)do deret ← deret + i i ← i + 1 return deret;
#include <stdio.h> int Deret(int N); void main() { int N; printf("N = "); scanf("%d", &N); printf("Jumlah deret N = %d \n", Deret(N)); } int Deret(int N) /* Mengembalikan nilai deret N */ int i, deret = 0; for (i=1; i<=N;i++) deret = deret + i; return deret;
3. Menentukan Faktorial Buatlah algoritma dan program C yang membaca nilai N, kemudian memanggil fungsi Faktorial yang menghitung N! = 1 x 2 x 3 x ... x N dan mengembalikan nilai N! Program utama kemudian menampilkan nilai N! tersebut di akhir program.
Algoritma PROGRAM Hitung_Faktorial { Program yang menghitung nilai faktorial } DEKLARASI N : integer function Faktorial (input N : integer) → integer ALGORITMA: read (N) write (N! = Faktorial(N))
Algoritma function Faktorial (input N : integer) → integer { Menghitung nilai N faktorial } DEKLARASI i, faktorial : integer ALGORITMA: faktorial ← 1; for (i←1 to N) do faktorial ← faktorial * i i ← i + 1 return faktorial
#include <stdio.h> int Faktorial(int N); void main() { int N; printf("N = "); scanf("%d", &N); printf("N! = %d \n", Faktorial(N)); } int Faktorial(int N) /* Mengembalikan nilai N faktorial */ int i, faktorial = 1; for (i=1; i<=N;i++) faktorial = faktorial * i; return faktorial;
4. Menentukan Data Terkecil Tulislah algoritma untuk menentukan bilangan terkecil dari N buah data integer yang dibaca dari papan ketik dan disimpan dalam sebuah array. Nilai N ditentukan maksimum 20.
Algoritma PROGRAM Cari_Minimum {Menentukan bilangan terkecil dari N buah data integer} DEKLARASI N = 20, bil[N], nmin, jml, i : integer function Min (input X[ ] , k : integer) → integer ALGORITMA: read (jml) for i 0 to jml do read ( bil[i] ) endfor nmin Min(bil[i] , jml) write (nmin)
Algoritma Fungsi Min function Min (input X[ ] , k : integer) → integer { Mengembalikan nilai minimum } DEKLARASI minimum : integer ALGORITMA: minimum ← X[0] for i 0 to k do if X[i] < minimum then minimum ← X[i] endif endfor return (minimum)
#include <stdio.h> #define N 20 int Min(int X[],int k); int i; void main() { int jml, nmin, bil[N]; printf("Jumlah bilangan (maks 20) : "); scanf("%d",&jml); for (i=0;i<jml;i++) { printf("Bilangan ke %d : ",i+1); scanf("%d",&bil[i]); } nmin = Min(bil,jml); printf("Nilai minimum adalah : %d", nmin);
int Min(int X[],int k) { int minimum = X[0]; for (i=0;i<k;i++){ if (X[i] < minimum) minimum = X[i]; } return minimum;
5. Pengurutan Array Ada banyak metoda pengurutan array, namun salah satu metode yang populer adalah Bubble Sort. Jumlah tahap pengurutan = jumlah bilangan – 1 Banyaknya perbandingan pada setiap tahap = jumlah bilangan – nomor tahap Misalnya Anda memiliki empat buah angka: 10-5-7-3 yang akan diurutkan dari yang terkecil hingga yang terbesar (ascending). Metode Bubble Sort akan membagi proses pengurutan menjadi tiga tahap
#include <stdio.h> #define N 20 int i,j,A[N]; void bubble(int n); void main() { int jml; printf("Masukkan jumlah bilangan (maks 20) : "); scanf("%d",&jml); printf("\n"); for (i=0;i<jml;i++) printf("Bilangan ke %d : ",i+1); scanf("%d",&A[i]); } printf("\n"); bubble(jml); printf("Data yang sudah terurut : \n"); printf("%d\n",A[i]); }
void bubble(int n) { int temp; for (i=1;i<=n-1;i++) for (j=i;j<n;j++) if (A[i-1]>A[j]) temp = A[i-1]; A[i-1] = A[j]; A[j] = temp; }