Salam All,
Terkait dengan tidak tersedianya ruangan untuk pertemuan pagi
ini, berikut Saya berikan uraian tugas kelompok yang diekivalensikan sebagai
pertemuan sesi pertama hari ini, Selasa 23 Oktober 2012.
Kamu Pasti Bisa (KPB) adalah lembaga bimbingan belajar yang
sedang menanjak sukses. KPB memiliki banyak siswa dan tutor. Oleh karena itu,
KPB membutuhkan aplikasi (program) yang dapat membantu aktifitas mereka.
Buatlah sebuah algoritma untuk membantu aktifitas KPB dengan melakukan proses
sebagai berikut :
1. Memasukkan data siswa ke dalam larik bernama Siswa. Data
siswa terdiri dari nama, jenis kelamin, alamat, dan nomor telepon. Algoritma
akan membaca jumlah data siswa yang akan disimpan ke dalam larik Siswa.
2. Menampilkan data siswa ke piranti keluaran
3. Memasukkan nilai akhir setiap siswa ke dalam larik bernama
Nilai, di mana setiap elemen larik Nilai berisi nama siswa dan nilainya.
4. Memasukkan data tutor ke dalam larik bernama Tutor. Data
tutor terdiri dari nama, jenis kelamin, alamat, nomor telepon, tanggal menjadi
tutor
5. Menampilkan data tutor ke piranti keluaran
6. Memasukkan nama mata pelajaran yang diajar setiap tutor ke
dalam larik Jadwal, di mana setiap elemen larik Jadwal berisi nama tutor, nama
mata pelajaran yang diajar, dan waktu kursus.
7. Memasukkan nilai-nilai siswa pada mata pelajaran Matematika
ke dalam larik Rincian_nilai_Mtk, di mana setiap elemen larik Rincian_nilai
berisi nama siswa, nilai kehadiran, nilai tugas, dan nilai ujian.
8. Memasukkan nilai akhir siswa pada mata pelajaran Matematika
ke dalam larik nilai_akhir_Mtk, di mana setiap elemen larik tersebut berisi
nama siswa dan nilai akhir. Nilai akhir diperoleh dari formula berikut : 30%
nilai kehadiran+30% nilai tugas+40% niai ujian.
9. Menampilkan data siswa dengan nilai akhir pada mata
pelajaran Matematika di atas 79.
10. Menyimpan data siswa dengan nilai akhir pada mata
pelajaran Matematika di atas 79 ke dalam larik Siswa_berprestasi, dan menyimpan
data siswa dengan nilai akhir pada mata pelajaran Matematika kurang atau sama
dengan 79 ke dalam larik Siswa_rata_rata.
11. Menampilkan nama siswa yang memiliki nilai tertinggi pada
mata pelajaran Matematika.
Seluruh proses di atas, dilakukan oleh algoritma dengan
menggunakan Procedure.
Adapun yang harus diselesaikan pagi ini adalah prosedur nomor
7 sampai dengan 11
Setelah algoritma selesai dibuat, ubahlah algoritma menjadi
program.
Jawab :
JAWABAN SOAL
PERTEMUAN SELASA, 23 OKTOBER 2012
Algoritma KPB
{Menyelesaikan
pekerjaan KPB}
Deklarasi :
type data_mtk : record <nama : string, kehadiran : real, tugas : real, ujian :
real>
type data_na_mtk : record <nama :
string, nilai_akhir : real>
type data_siswa_nilai : record
<nama : string, nilai_akhir : real>
type larik_data_mtk : array [1 . .
1000] of data_mtk
type larik_data_na_mtk : array [1 . . 1000] of data_na_mtk
type larik_siswa_nilai: array [1 . . 1000] of data_siswa_nilai
rincian_nilai_mtk : larik_data_mtk
nilai_akhir_mtk : larik_data_na_mtk
siswa_berprestasi : larik_siswa_nilai
siswa_rata_rata : larik_siswa_nilai
procedure isi_data_siswa (input jml_siswa :
integer, output siswa : larik_data_siswa)
procedure isi_nilai_akhir (input jml_siswa :
integer, siswa : larik_data_siswa , output nilai : larik_data_nilai)
procedure isi_data_tutor
(input jml_tutor : integer, output tutor : larik_data_tutor)
procedure isi_data_jadwal (input jml_tutor : integer, tutor : larik_data_tutor,
output jadwal : larik_data_jadwal)
procedure isi_nilai_rinci_mtk (input jml_siswa :
integer, siswa : larik_data_siswa , output rincian_nilai_mtk : larik_data_mtk)
procedure isi_ nilai_akhir_mtk (input jml_siswa :
integer, rincian_nilai_mtk : larik_data_mtk, output nilai_akhir_mtk : larik_data_na_mtk)
procedure cetak_siswa_atas_79 (input jml_siswa :
integer, nilai_akhir_mtk : larik_data_na_mtk)
procedure isi_siswa_nilai (input jml_siswa :
integer, nilai_akhir_mtk : larik_data_na_mtk, output siswa_berprestasi : larik_siswa_nilai,
siswa_rata_rata : larik_siswa_nilai, jml_s_p : integer, jml_s_r : integer)
procedure cetak_siswa_nilai_tertinggi (input jml_s_p
: integer, siswa_berprestasi : larik_siswa_nilai)
jum_siswa, jum_tutor : integer
jum_s_p, jum_s_r : integer
Definisi :
read (jum_siswa)
isi_data_siswa (jum_siswa, siswa)
isi_nilai_akhir (jum_siswa, siswa, nilai)
read (jum_tutor)
isi_data_tutor (jum_tutor, tutor)
isi_data_jadwal
(jum_tutor, tutor, jadwal)
isi_nilai_rinci_mtk (jum_siswa,
siswa, rincian_nilai_mtk)
isi_ nilai_akhir_mtk (jum_siswa,
rincian_nilai_mtk, nilai_akhir_mtk)
cetak_siswa_atas_79 (jum_siswa, nilai_akhir_mtk)
isi_siswa_nilai (jum_siswa,
nilai_akhir_mtk, siswa_berprestasi, siswa_rata_rata, jum_s_p, jum_s_r)
cetak_siswa_nilai_tertinggi (jum_s_p, siswa_berprestasi)
end algoritma
procedure isi_nilai_rinci_mtk (input jml_siswa : integer, siswa :
larik_data_siswa , output rincian_nilai_mtk : larik_data_mtk)
{Mengisi nilai rinci siswa pada mata pelajaran Matematika}
Deklarasi :
i : integer
Definisi :
for
i ¬ 1 to jml_siswa
do
rincian_nilai_mtk[i].nama ¬ siswa[i].nama
read (rincian_nilai_mtk[i]. kehadiran)
read
(rincian_nilai_mtk[i]. tugas)
read
(rincian_nilai_mtk[i]. ujian)
end for
end procedure
procedure isi_
nilai_akhir_mtk (input jml_siswa : integer, rincian_nilai_mtk : larik_data_mtk,
output nilai_akhir_mtk : larik_data_na_mtk)
{Mengisi nilai akhir siswa pada mata pelajaran Matematika}
Deklarasi :
i : integer
na : real
Definisi :
for
i ¬ 1 to jml_siswa
do
na ¬ (0.3 * rincian_nilai_mtk[i].kehadiran + 0.3 *
rincian_nilai_mtk[i].tugas + 0.4 * rincian_nilai_mtk[i].ujian)
nilai_akhir_mtk[i].nama ¬ rincian_nilai_mtk[i].nama
nilai_akhir_mtk[i]. nilai_akhir ¬ na
end for
end procedure
procedure cetak_siswa_atas_79 (input jml_siswa : integer,
nilai_akhir_mtk : larik_data_na_mtk)
{Menampilkan nama siswa yang memiliki nilai akhir mata pelajaran
Matematika di atas 79}
Deklarasi :
i : integer
Definisi :
for i ¬ 1 to jml_siswa do
if (nilai_akhir_mtk[i].nilai_akhir
> 79) then
write (nilai_akhir_mtk[i].nama)
end if
end for
end procedure
procedure
isi_siswa_nilai (input jml_siswa : integer, nilai_akhir_mtk :
larik_data_na_mtk, output siswa_berprestasi : larik_siswa_nilai, siswa_rata_rata
: larik_siswa_nilai, jml_s_p : integer, jml_s_r : integer)
{Memasukkan data
siswa yang memiliki nilai mata pelajaran Matematika di atas 79 ke dalam larik siswa_berprestasi dan selebihnya ke dalam larik siswa_rata_rata
}
Deklarasi :
i : integer
Definisi :
jml_s_p ¬ 0
jml_s_r ¬ 0
for i ¬ 1 to jml_siswa do
if (nilai_akhir_mtk[i].nilai_akhir
> 79) then
siswa_berprestasi[i] ¬ nilai_akhir_mtk[i]
jml_s_p ¬ jml_s_p
+ 1
else
siswa_rata_rata[i]
¬ nilai_akhir_mtk[i]
jml_s_r ¬ jml_s_r + 1
end if
end for
end procedure
procedure
cetak_siswa_nilai_tertinggi (input jml_s_p : integer, siswa_berprestasi : larik_siswa_nilai)
{Menampilkan data
siswa dengan nilai tertinggi pada mata pelajaran Matematika}
Deklarasi :
i :
integer
indeks_maks : real
Definisi :
indeks_maks ¬ 1
for i ¬ 2 to jml_s_p do
if (siswa_berprestasi[i]. nilai_akhir > siswa_berprestasi[indeks_maks].
nilai_akhir) then
indeks_maks ¬ i
end if
end for
write (siswa_berprestasi[indeks_maks].
nilai_akhir)
end procedure
Tidak ada komentar:
Posting Komentar