Buat Program Pascal Record yang outputnya seperti di bawah ini: Tolong

Berikut ini adalah pertanyaan dari kielsihombing23 pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas

Buat Program Pascal Record yang outputnya seperti di bawah ini:
Tolong ya, terima kasih
Buat Program Pascal Record yang outputnya seperti di bawah ini:
Tolong ya, terima kasih

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

Kode Program (Pascal)

{$mode objfpc}
{$modeswitch ADVANCEDRECORDS}
program RecordMhs;
uses
 crt, sysutils;

{ Record data mahasiswa }
type
 TMahasiswa = record
   nim: string[8];
   nama: string;
   nilai: record
       tugas,
       uts,
       uas,
       na: real;
   end;
   grade: char;
   procedure hitungNilaiAkhirDanGrade();
   procedure inputData();
 end;

procedure TMahasiswa.hitungNilaiAkhirDanGrade();
begin
 with self do
 begin
   with nilai do
     na := (tugas + uts + uas) / 3;
   if (nilai.na >= 85) then
     grade := 'A'
   else if (nilai.na >= 70) then
     grade := 'B'
   else if (nilai.na >= 60) then
     grade := 'C'
   else if (nilai.na >= 50) then
     grade := 'D'
   else grade := 'C';
 end;
end;

procedure TMahasiswa.inputData();
begin
 with self do
 begin
   write('NIM   : '); readLn(nim);
   write('Nama  : '); readLn(nama);
   write('Tugas : '); readLn(nilai.tugas);
   write('UTS   : '); readLn(nilai.uts);
   write('UAS   : '); readLn(nilai.uas);
 end;
end;

var
 n, i: integer;
 dataMhs: array of TMahasiswa;

begin
 clrscr;
 writeLn('Input Data Nilai Mahasiswa');
 write('Berapa mahasiswa? ');
 readLn(n);
 setLength(dataMhs, n);
 for i := 1 to n do
 begin
   writeln('Mahasiswa ke :', i:3);
   dataMhs[i].inputData;
   dataMhs[i].hitungNilaiAkhirDanGrade;
 end;
 writeLn('-------------------------------------------------------');
 writeLn(' NO     NIM    NAMA  TUGAS   UTS    UAS    NA    GRADE');
 writeLn('-------------------------------------------------------');
 for i := 1 to length(dataMhs) do
 begin
   with dataMhs[i] do
   begin
     writeln(
       i:3, '  ',
       nim, '  ',
       nama, '  ',
       nilai.tugas:2:2, '  ',
       nilai.uts:2:2, '  ',
       nilai.uas:2:2, '  ',
       nilai.na:2:2,
       grade:5
     );
   end;
 end;
 writeLn('-------------------------------------------------------');
 writeLn;
end.
________________

Pembahasan

Program di atas merupakan contoh implementasi tipe data Record pada Pascal, berdasarkan gambar output pada pertanyaan. Data mahasiswa berupa NIM, nama, nilai tugas, nilai UTS, nilai UAS, dan grade, disimpan dalam bentuk record dengan nama TMahasiswa.

Jenis record yang digunakan adalah advanced record, karena pada record TMahasiswa terdapat procedure hitungNilaiAkhirDanGrade( )daninputData( ). Oleh karena itu, pada bagian baris teratas disisipkan compiler directive yang diperlukan, yaitu {$mode objfpc}dan{$modeswitch ADVANCEDRECORDS}. Jika tidak ada procedure dalam record, maka record tersebut berjenis fixed record, dan kedua compiler directive tersebut tidak diperlukan.

Karena tidak ada keterangan tentang penentuan grade dari nilai akhir (NA), maka saya menentukan sendiri, dengan memperhatikan hasil output yang diinginkan.

Aturan penentuan grade untuk kasus ini ditentukan sebagai berikut:

  • Grade A: 85 ≤ NA ≤ 100.
  • Grade B: 70 ≤ NA < 85.
  • Grade C: 60 ≤ NA < 70.
  • Grade D: 50 ≤ NA < 60
  • Grade E: 0 ≤ NA < 50.

Hasil eksekusi dengan data masukan menyesuaikan pertanyaan dapat dilihat pada gambar lampiran.

Catatan:

  • Compiler yang digunakan: FreePascal 3.2.2 (dalam WSL)
  • IDE: VSCode (Windows)

Kode Program (Pascal){$mode objfpc}{$modeswitch ADVANCEDRECORDS}program RecordMhs;uses  crt, sysutils;{ Record data mahasiswa }type  TMahasiswa = record    nim: string[8];    nama: string;    nilai: record        tugas,        uts,        uas,        na: real;    end;    grade: char;    procedure hitungNilaiAkhirDanGrade();    procedure inputData();  end;procedure TMahasiswa.hitungNilaiAkhirDanGrade();begin  with self do  begin    with nilai do      na := (tugas + uts + uas) / 3;    if (nilai.na >= 85) then      grade := 'A'    else if (nilai.na >= 70) then      grade := 'B'    else if (nilai.na >= 60) then      grade := 'C'    else if (nilai.na >= 50) then      grade := 'D'    else grade := 'C';  end;end;procedure TMahasiswa.inputData();begin  with self do  begin    write('NIM   : '); readLn(nim);    write('Nama  : '); readLn(nama);    write('Tugas : '); readLn(nilai.tugas);    write('UTS   : '); readLn(nilai.uts);    write('UAS   : '); readLn(nilai.uas);  end;end;var  n, i: integer;  dataMhs: array of TMahasiswa;begin  clrscr;  writeLn('Input Data Nilai Mahasiswa');  write('Berapa mahasiswa? ');  readLn(n);  setLength(dataMhs, n);  for i := 1 to n do  begin    writeln('Mahasiswa ke :', i:3);    dataMhs[i].inputData;    dataMhs[i].hitungNilaiAkhirDanGrade;  end;  writeLn('-------------------------------------------------------');  writeLn(' NO     NIM    NAMA  TUGAS   UTS    UAS    NA    GRADE');  writeLn('-------------------------------------------------------');  for i := 1 to length(dataMhs) do  begin    with dataMhs[i] do    begin      writeln(        i:3, '  ',        nim, '  ',        nama, '  ',        nilai.tugas:2:2, '  ',        nilai.uts:2:2, '  ',        nilai.uas:2:2, '  ',        nilai.na:2:2,        grade:5      );    end;  end;  writeLn('-------------------------------------------------------');  writeLn;end.________________PembahasanProgram di atas merupakan contoh implementasi tipe data Record pada Pascal, berdasarkan gambar output pada pertanyaan. Data mahasiswa berupa NIM, nama, nilai tugas, nilai UTS, nilai UAS, dan grade, disimpan dalam bentuk record dengan nama TMahasiswa.Jenis record yang digunakan adalah advanced record, karena pada record TMahasiswa terdapat procedure hitungNilaiAkhirDanGrade( ) dan inputData( ). Oleh karena itu, pada bagian baris teratas disisipkan compiler directive yang diperlukan, yaitu {$mode objfpc} dan {$modeswitch ADVANCEDRECORDS}. Jika tidak ada procedure dalam record, maka record tersebut berjenis fixed record, dan kedua compiler directive tersebut tidak diperlukan.Karena tidak ada keterangan tentang penentuan grade dari nilai akhir (NA), maka saya menentukan sendiri, dengan memperhatikan hasil output yang diinginkan.Aturan penentuan grade untuk kasus ini ditentukan sebagai berikut:Grade A: 85 ≤ NA ≤ 100.Grade B: 70 ≤ NA < 85.Grade C: 60 ≤ NA < 70.Grade D: 50 ≤ NA < 60Grade E: 0 ≤ NA < 50.Hasil eksekusi dengan data masukan menyesuaikan pertanyaan dapat dilihat pada gambar lampiran.Catatan:Compiler yang digunakan: FreePascal 3.2.2 (dalam WSL)IDE: VSCode (Windows)

Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.

Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact

Last Update: Sun, 25 Dec 22