Contoh-contoh Pemecahan Masalah TEE 2103 Algoritma & Pemograman Dosen: Abdillah, MIT HP: 0853 6581 8665 Email: abdill01@gmail.com Website: http://abdill01.wordpress.com
Tujuan Mahasiswa mampu menyelesaikan masalah berdasar pada contoh-contoh algoritma penyelesaian masalah dan programnya.
Daftar Masalah Menghitung Jumlah Deret Menentukan Nilai Rata-rata Mengurutkan Nilai Menghitung x Pangkat y Menghitung N Faktorial
1. Menghitung Jumlah Deret Buatlah algoritma dan program deret yang membaca nilai N kemudian memanggil fungsi hitung_deret yang menghitung 1+2+3+...+N dan mengembalikan jumlah deret. Program deret kemudian menampilkan jumlah deret di layar monitor.
Algoritma Fungsi function hitung_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 return deret
Algoritma Program Utama PROGRAM deret { Program yang menghitung nilai deret } DEKLARASI N : integer ALGORITMA: read (N) write (‘Jumlah deret N =‘ hitung_deret(N))
Program Deret #include <stdio.h> int hitung_deret(int N) { int i, deret = 0; for (i=1; i<=N;i++) deret = deret + i; return deret; } main() int N; printf("N = "); scanf("%d", &N); printf("Jumlah deret %d = %d \n", N, hitung_deret(N));
2. Menentukan Nilai Rata-rata Tulislah algoritma dan program rerata yang membaca 3 buah nilai ujian dari papan ketik dan menyimpannya dalam sebuah larik. Program rerata memanggil fungsi hitung_rerata yang menghitung dan mengembalikan nilai rata-rata ujian. Program rerata kemudian menampilkan nilai rata- rata tsb di layar monitor.
Algoritma Fungsi function hitung_rerata (input nilai[ ], k : integer) → integer { Menghitung dan mengembalikan nilai rata-rata } DEKLARASI i, jumlah : integer ALGORITMA: jumlah ← 0 for (i 0 to k-1) do jumlah ← jumlah + nilai[i] endfor return (jumlah/k)
Algoritma Program Utama PROGRAM rerata { Membaca, menyimpan 3 buah nilai ujian dalam sebuah larik dan menampilkan nilai rata-ratanya } DEKLARASI i, N, nilai[N], : integer ALGORITMA: N 3 for (i 0 to N-1) do read ( nilai[i] ) endfor write (‘Nilai rata-rata =‘ hitung_rerata(nilai, N)
Program Rerata #include <stdio.h> int hitung_rerata(int nilai[],int k) { int i, jumlah = 0; for (i=0;i<k;i++) jumlah = jumlah + nilai[i]; return jumlah/k; } main() int i, N = 3, nilai[N],; printf(“Masukkan 3 nilai ujian"); for (i=0;i<N;i++) { printf(“Nilai ke %d: ",i+1); scanf("%d",&nilai[i]); printf("Nilai rata-rata: %d", hitung_rerata(nilai,N);
3. Mengurutkan Nilai Tulislah algoritma dan program pengurutan yang membaca 4 buah nilai ujian dari papan ketik, menyimpannya dalam sebuah larik dan memanggil prosedur urut_nilai yang mengurutkan nilai dari yang terkecil hingga yang terbesar. Program pengurutan kemudian menampilkan urutan nilai ujian tsb di layar monitor.
Algoritma Pengurutan Apung (Bubble Sort) Algoritma pengurutan ini dibagi dalam tahap-tahap dimana dalam setiap tahap dilakukan perbandingan. Jumlah tahap adalah banyaknya nilai dikurangi satu. Jumlah perbandingan setiap tahap adalah banyaknya nilai dikurangi nomor tahap. Jika banyaknya nilai adalah 4, maka metode ini membagi proses pengurutan menjadi 3 tahap. Tahap 1 melakukan 3 kali perbandingan Tahap 2 melakukan 2 kali perbandingan Tahap 3 melakukan 1 kali perbandingan
Algoritma Fungsi procedure urut_nilai() { Mengurutkan nilai dari terkecil hingga terbesar} DEKLARASI i, j, nilai[4]: integer {variabel global} temp: integer {variabel lokal} ALGORITMA: for (i=1 to 3) for (j=i to 3) if (nilai[i-1] > nilai[j]) temp nilai[i-1] nilai[i-1] nilai[j] nilai[j] temp endfor
Algoritma Program Utama PROGRAM pengurutan DEKLARASI tidak ada ALGORITMA: write(‘Masukkan 4 nilai ujian’) for (i 0 to 3) do read ( nilai[i] ) endfor urut_nilai() write (‘Nilai yang sudah terurut adalah:‘) write ( nilai[i] )
Program Fungsi #include <stdio.h> int i, j, nilai[4]; // variabel global void urut_nilai() { int temp; // variabel lokal for (i=1;i<4;i++) for (j=i;j<4;j++) if (nilai[i-1] > nilai[j]) temp = nilai[i-1]; nilai[i-1] = nilai[j]; nilai[j] = temp; }
Program Pengurutan main() { printf(“Masukkan 4 nilai ujian"); for (i=0;i<4;i++) printf(“Nilai ujian ke %d: ",i+1); scanf("%d",&nilai[i]); } urut_nilai(); printf(“Nilai ujian yang sudah terurut : \n"); printf("%d\n", nilai[i]);
4. Menghitung x Pangkat y Buatlah algoritma dan program pangkat yang membaca nilai x dan y kemudian memanggil fungsi hitung_pangkat yang menghitung dan mengembalikan nilai x pangkat y. Program pangkat kemudian menampilkan nilai x pangkat y di layar monitor.
Algoritma Fungsi function hitung_pangkat (input x, y : integer) → integer { Menghitung dan mengembalikan nilai x pangkat y } DEKLARASI i, pangkat: integer ALGORITMA: pangkat ← 1 for (i←1 to y) do pangkat ← pangkat * x return pangkat
Algoritma Program Utama PROGRAM pangkat { Membaca x dan y serta menampilkan nilai x pangkat y } DEKLARASI x, y : integer ALGORITMA: read (x, y) write (‘x pangkat y =’ hitung_pangkat(x,y))
Program Pangkat #include <stdio.h> int hitung_pangkat(int x, int y) { int i, pangkat; pangkat = 1; for (i=1; i<=y; i++) pangkat = pangkat * x; return pangkat; } main() int x,y; printf("x = "); scanf("%d", &x); printf(“y = "); scanf("%d", &y); printf(“x pangkat y = %d \n", hitung_pangkat(x,y));
5. Menghitung N Faktorial Buatlah algoritma dan program faktorial yang membaca nilai N, kemudian memanggil fungsi hitung_faktorial yang menghitung dan mengembalikan nilai N! = 1*2*3*...*N. Program faktorial kemudian menampilkan nilai N! di layar monitor.
Algoritma Fungsi function hitung_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 return faktorial
Algoritma Program Utama PROGRAM faktorial { Program yang menghitung nilai faktorial } DEKLARASI N : integer ALGORITMA: read (N) write (‘N faktorial =‘ hitung_faktorial(N))
Program Faktorial #include <stdio.h> int hitung_faktorial(int N) { int i, faktorial = 1; for (i=1; i<=N;i++) faktorial = faktorial * i; return faktorial; } main() int N; printf("N = "); scanf("%d", &N); printf(“%d! = %d \n", N, hitung_faktorial(N));