Author Topic: Algoritma 1  (Read 2692 times)

0 Members and 1 Guest are viewing this topic.

Offline Anta

  • Developer
  • Advanced
  • *
  • Posts: 710
  • Reputasi Poin: 39
  • Gender: Male
    • View Profile
Algoritma 1
« on: August 26, 2008, 04:18:20 PM »
Contoh Soal-soal algoritma 1

Procedure dan Function
Code: [Select]
program functionlembur;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var unama : string;
    ujk, uupj, ugaji : integer;

Procedure InputData(var Nama: String; var jk, upj : integer);
begin
   write('Nama        : ');readln(Nama);
   write('Jam Kerja   : ');readln(jk);
   write('UPJ         : ');readln(upj);
end;

Function GajiTotal(jam, upj : integer) : integer;
begin
   if jam <= 8 Then Result := jam * upj
   else Result := Round((upj * 8) + ((jam - 8) * (upj * 1.5)));
end;

procedure CetakData(gaji : integer);
begin
   writeln('==== result ====');
   Writeln('Total Gaji  : ', FormatFloat('############', gaji));
end;

begin
   inputdata(unama, ujk, uupj);
   ugaji := GajiTotal(ujk, uupj);
   cetakdata(ugaji);
   readln;
end.

assembler style
Code: [Select]
program functionna;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var unama : string;
    utgs, uuts, uuas, una : integer;

Procedure InputData(var Nama: String; var tgs, uts, uas : integer);
begin
   write('Nama        : ');readln(Nama);
   write('Tugas       : ');readln(tgs);
   write('UTS         : ');readln(uts);
   write('UAS         : ');readln(uas);
end;

function NilaiAkhir(tgs, uts, uas: integer) : integer;
begin
   result := Round((0.2 * tgs) + (0.3 * uts) + (0.5 * uas));
end;

function indeks(NA : integer) : char; assembler;
asm
       mov edx, eax
       cmp edx, 85
       jge @n85
       cmp edx, 70
       jge @n70
       cmp edx, 60
       jge @n60
       mov eax, 68
       jmp @end

@n60 : mov eax, 67
       jmp @end

@n70 : mov eax, 66
       jmp @end

@n85 : mov eax, 65
       jmp @end
@end :

end;

{
function Indeks(NA : integer) : char;
begin
   if na >= 85 then result := 'A'
   else if na >= 70 then result := 'B'
   else if na >= 60 then result := 'C'
   else result := 'D';
end;
 }
procedure CetakData(NA : integer; indek : char);
begin
   writeln('==== result ====');
   Writeln('Nilai Akhir : ', FormatFloat('00.0', na));
   writeln('Indeks      : ', indek);
end;

begin
   inputdata(unama, utgs, uuts, uuas);
   una := nilaiakhir(utgs, uuts, uuas);
   cetakdata(una, indeks(una));
   readln;
end.

Array
Code: [Select]
program parray;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const ID_UTS = 1;
      ID_UAS = 2;
      ID_TGS = 3;
      ID_NA  = 4;
      JML    = 3;

var Nilai : Array[1..JML, 1..4] of Word;
    Nama  : Array[1..JML] of String;
    x,y   : Integer;
    ruts, ruas, rtgs,rna : Integer;
    s     : string;

Procedure BacaData(var vNama : String; var vUTS, vUAS, vTGS : Word);
Begin
   Write('Nama : ');Readln(vNama);
   Write('UTS  : ');Readln(vUTS);
   Write('UAS  : ');Readln(vUAS);
   Write('TGS  : ');Readln(vTGS);
End;

Function NilaiAkhir(vUTS, vUAS, vTGS : Integer) : Integer;
Begin
   Result := Round(vUTS * 0.3 + vUAS * 0.5 + vTGS * 0.2);
End;

begin
   for x := Low(Nama) To High(Nama) Do
      BacaData(Nama[x], Nilai[x, ID_UTS], Nilai[x, ID_UAS], Nilai[x, ID_TGS]);

   for x := Low(Nama) To High(Nama) Do
      Nilai[x, ID_NA] := NilaiAkhir(Nilai[x, ID_UTS], Nilai[x, ID_UAS], Nilai[x, ID_TGS]);

   ruts := 0;
   ruas := 0;
   rtgs := 0;
   rna  := 0;
   Writeln('------------------------------------------------------');
   Writeln('--     Nama     --  UTS  --  UAS  --  TGS  --  NA   --');
   Writeln('------------------------------------------------------');
   for x := Low(Nama) To High(Nama) Do
     Begin
       ruts := ruts + Nilai[x, ID_UTS];
       ruas := ruas + Nilai[x, ID_UAS];
       rtgs := rtgs + Nilai[x, ID_TGS];
       rna  := rna  + Nilai[x, ID_NA];
      s := '';
      for y := 0 to 11 - Length(Nama[x]) Do s := s + ' ';
      if Length(Nama[x]) > 13 then Nama[x] := Copy(Nama[x], 1, 13)
      else Nama[x] := Nama[x] + s;
      Write('-- ',Nama[x], ' -- ', FormatFloat(' 000 ', Nilai[x, ID_UTS]), ' -- ');
      write(FormatFloat(' 000 ', Nilai[x, ID_UAS]), ' -- ',FormatFloat(' 000 ', Nilai[x, ID_TGS]), ' -- ');
      writeln(FormatFloat(' 000 ', Nilai[x, ID_NA]), ' -- ');

     end;
   ruts := ruts div High(Nama);
   ruas := ruas div High(Nama);
   rtgs := rtgs div High(Nama);
   rna := rna div High(Nama);
   Writeln('-------- RATA RATA -----------------------------------');
   Writeln('-- UTS : ',FormatFloat('000',ruts),'    UAS : ',FormatFloat('000', ruas),'    TGS : ', FormatFloat('000', rtgs),'    NA : ', FormatFloat('000', rna),'  --');
   Writeln('------------------------------------------------------');
   readln;

end.

Record:
Code: [Select]
program mhsrecord;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type TScore = Record
                  NA,
                  UTS,
                  UAS,
                  TGS : Real;
              End;
     TMHS   = Record
                 Nama : String[255];
                 NIM  : String[30];
                 idx : Char;
                 Score : TScore;
            End;

Procedure inputdata(var Value : TMHS);
Begin
   with Value Do
   Begin
      Write('Nama : '); readln(nama);
      Write('NIM  : '); readln(nim);
      with score do
      begin
        Writeln('----[ Nilai ]----');
        Write('TGS :');readln(TGS);
        Write('UTS :');readln(UTS);
        Write('UAS :');readln(UAS);
      end;
   end;
end;


Procedure calcNA(var Value : TScore);
Begin
   with Value Do
        NA := (0.2 * TGS) + (0.3 * UTS) + (0.5 * UAS);
End;


Procedure calcIDX(var Value: TMHS);
Begin
  With Value.Score Do
       Begin
          if NA > 90 Then
             Value.idx := 'A'
          else if NA > 75 Then
             Value.idx := 'B'
          else if NA >= 60 Then
             Value.idx := 'C'
          else Value.idx := 'D';
       end;
end;

procedure cetak(Value: TMHS);
Begin
  with Value Do
  Begin
    Writeln('----[ Kalkulasi ]----');
    Writeln('Nilai Akhir : ', Score.NA);
    Writeln('Indeks      : ', idx);
  end;
end;


var MHS : TMHS;

begin
  inputdata(MHS);
  calcna(MHS.Score);
  calcidx(MHS);
  cetak(MHS);
  readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.

kalo ada yang salah, error, bingung, ga ngerti tentang algoritma 1 silahkan posting ke thread ini
« Last Edit: October 10, 2008, 01:13:13 AM by Anta »

Offline Anta

  • Developer
  • Advanced
  • *
  • Posts: 710
  • Reputasi Poin: 39
  • Gender: Male
    • View Profile
Soal UAS
« Reply #1 on: August 26, 2008, 04:19:53 PM »
Code: [Select]
program xuas;

////////////////////////////////////////////
// Go&Go Tour for UAS Algoritma 1 rev 0.1 //
////////////////////////////////////////////
// Written by: Andrianto (2005130042)     //
////////////////////////////////////////////

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
   TNamaP = record
                Nama     : String;
                NoPaspor : String;
                Umur     : Real;
              end;
   TPeserta = record
                 Nomor  : String;
                 Kode   : char;
                 Harga  : Real;
                 Disc   : Real;
                 Bayar  : Real;
                 pes    : TNamaP;
              End;

const DLEN = 20;

var DataTour : array[1..DLEN] of TPeserta;
    i, j     : Integer;
    tharga, tdisc, tbayar : real;


//////////////////////
// fungsi tambahan //
////////////////////
function STour(k : Char) : String;
begin
   Case Upcase(k) of
     'A' : Result := 'Smile Europe';
     'B' : Result := 'Enjoy Asia';
     'C' : Result := 'Holy Land';
     'D' : Result := 'Fan. America';
     else Result := '';
   End;
   if Result <> '' then Result := K + ' ('+Result+')';
End;


function Center(t:String; l: integer) : String;
var x,y : integer;
begin
   result := '';
   For x := 1 to l do result := result + ' ';
   y := l div 2 - length(t) div 2;
   if length(t) mod 2 = 1 then dec(y);
   dec(y);
   for x := 1 to length(t) do
     Result[x+y] := t[x];
end;


function Left(t:String; l: integer) : String;
var x : integer;
begin
   result := '';
   For x := 1 to l do result := result + ' ';
   if length(t) > l then t := Copy(t, 1, l);
   for x := 1 to length(t) do
     Result[x] := t[x];
end;



///////////////////
// fungsi utama //
/////////////////

function BTour(k : Char) : real;
begin
   Case Upcase(k) of
     'A' : BTour := 1500;
     'B' : BTour := 800;
     'C' : BTour := 2000;
     'D' : BTour := 1800;
     else BTour := 0;
   End;
End;

function Discount(h, u : real) : real;
begin
   if (u <= 5) or (u >= 60) then Discount := h * 0.5
   else if (u <= 10) then Discount := h * 0.25
   else Discount := 0;
End;

function FBayar(h, d : real) : real;
Begin
   FBayar := h - d;
end;




////////////////
// main code //
//////////////

begin
   // input data
   i := 1;
   Write('Nama Peserta : '); Readln(DataTour[i].pes.Nama);
   while (DataTour[i].Pes.Nama <> '') and (i <= DLEN) do
    With DataTour[i] Do
      Begin
         with Pes Do
          Begin
            Write('NoPaspor Peserta : ');readln(NoPaspor);
            Write('Umur Peserta : ');readln(Umur);
          End;
         Write('Nomor Peserta : ');Readln(Nomor);
         Write('Kode Tour : ');Readln(Kode);
         Writeln;
         i := i +1;
         if i <= DLEN Then
         Begin
            Write('Nama Peserta : ');
            Readln(DataTour[i].pes.Nama);
         End;
      End;

   // kalkulasi jumlah data
   j := i -1;

   // pemprosessan data
   tharga := 0; tbayar := 0; tdisc := 0;

   for i := 1 to j do
     With DataTour[i] Do
      Begin
         harga := BTour(Kode);
         Disc  := Discount(harga, Pes.Umur);
         Bayar := FBayar(harga, Disc);
         tharga := tharga + harga;
         tdisc  := tdisc  + disc;
         tbayar := tbayar + bayar;
      End;

   // pencetakan data
   Writeln;
   Writeln(Center('DAFTAR PESERTA GO&GO TOUR',79));
   Writeln('-------------------------------------------------------------------------------');
   Writeln('-   Nama Peserta   - Umur -       Kode       -  Biaya   - Discount -   Bayar  -');
   Writeln('-                  -      -                  -   Tour   -          -          -');
   Writeln('-------------------------------------------------------------------------------');

   for i := 1 to j do
    With DataTour[i] Do
      Writeln('- ',Left(Pes.Nama, 16), ' - ', Pes.Umur:4:0,' - ', Left(STour(Kode),16),' - ', harga:8:0,' - ', Disc:8:0,' - ', bayar:8:0,' -');

   Writeln('-------------------------------------------------------------------------------');
   Writeln('TOTAL':44, ' : ',tharga:8:0,'   ',tdisc:8:0,'   ', tbayar:8:0);

   Writeln('Tekan sembarang tombol...');readln;

end.

Offline zinggles

  • Advanced
  • ***
  • Posts: 443
  • Reputasi Poin: 27
  • Gender: Male
    • View Profile
Re: Algoritma 1
« Reply #2 on: August 27, 2008, 03:29:51 PM »
waduh ne contekan ya??? ;D ;D

Offline Anta

  • Developer
  • Advanced
  • *
  • Posts: 710
  • Reputasi Poin: 39
  • Gender: Male
    • View Profile
Re: Algoritma 1
« Reply #3 on: August 27, 2008, 05:32:12 PM »
bukan contekan, tapi contoh soal :D
btw anak baru, posting-posting aja yah kesini tentang problem algo 1, gw juga dah lupa bahan2nya. so ntar qta bahas bareng2 aja kalo ada yang ga ngerti.
« Last Edit: August 27, 2008, 11:17:45 PM by Anta »

Offline Mr.Y

  • Dosen
  • Beginner
  • *
  • Posts: 111
  • Reputasi Poin: 8
  • Gender: Male
  • d beginning is d end is d beginning
    • View Profile
Re: Algoritma 1
« Reply #4 on: August 27, 2008, 06:33:46 PM »
iya.. buat dosen2 juga bisa kasi kisi2 soal disini juga... :P
setuju?? :D

Offline KiuKiu

  • Chief Of SEMA
  • Advanced
  • ***
  • Posts: 637
  • Reputasi Poin: 22
  • Gender: Male
  • ZetMan
    • View Profile
Re: Algoritma 1
« Reply #5 on: August 28, 2008, 01:42:57 AM »
Curiga ada 'dosen' yg ga mau kisi-kisinya dimuculin..

males bikin soal update soalnya...  :P

wkwkkwwk....  ;D

Offline enda

  • Newbie
  • *
  • Posts: 66
  • Reputasi Poin: 2
  • Gender: Male
    • View Profile
Re: Algoritma 1
« Reply #6 on: September 09, 2008, 09:31:35 AM »
klo bisa mah skalian aja ma kunci jawaban,,haha...

Offline khocho

  • Advanced
  • ***
  • Posts: 203
  • Reputasi Poin: 12
  • Gender: Male
  • Please dont stop the music!!!
    • View Profile
Re: Algoritma 1
« Reply #7 on: September 09, 2008, 09:53:26 AM »
Wah thx yah kak anta...
Ehh kita sekelas kalkulusnya yah...
Kak jgn di belakan atuh rada tengah biar bisa ngborol..
Hmmm aku manu nanya kalo algo buat terminate program yang sedang runing bagaimana yah
trus pas jalaninnya ka ke detec di task manager...
mau jail >:D >:D
Aloha.....Mulai posting2 lage ahhh
Tetep Asyik

Offline Garfield

  • Advanced
  • ***
  • Posts: 223
  • Reputasi Poin: 10
  • Gender: Male
  • fear me.. obey me.. don't depend on me..
    • View Profile
Re: Algoritma 1
« Reply #8 on: September 09, 2008, 03:23:34 PM »
ati2 tuh dosen2, kemaren aja ada MK yg dosennya beda, malah ngambil soal ujian dari dosen sebelumnya. ya ga Mr. Y ? ga usa dibilang siapa dosennya ya  O:-D
Sometimes we need a break in life. ~

Offline Anta

  • Developer
  • Advanced
  • *
  • Posts: 710
  • Reputasi Poin: 39
  • Gender: Male
    • View Profile
Algoritma I
« Reply #9 on: September 11, 2008, 03:49:53 PM »
hayo yang mau nanya algoritma posting disini aja.

Offline Mr.Y

  • Dosen
  • Beginner
  • *
  • Posts: 111
  • Reputasi Poin: 8
  • Gender: Male
  • d beginning is d end is d beginning
    • View Profile
Re: Algoritma 1
« Reply #10 on: September 12, 2008, 04:23:12 PM »
ati2 tuh dosen2, kemaren aja ada MK yg dosennya beda, malah ngambil soal ujian dari dosen sebelumnya. ya ga Mr. Y ? ga usa dibilang siapa dosennya ya  O:-D
sp ya??  ;D

Offline robz cuy

  • Advanced
  • ***
  • Posts: 767
  • Reputasi Poin: 18
  • Gender: Male
  • ganteng mode : on ...
    • View Profile
Re: Algoritma 1
« Reply #11 on: September 17, 2008, 01:50:55 PM »
algoritma tuh pas g blajar di klas ga bisa2 tp pas dicoba di rumah kok bs yah....
apakah ada pengaruh dari faktor lingkungan.....ho8 :P
YOURS MINE!!!!

whats next?

AAAHHHH FRESH MEAT!!!!

Offline headscout

  • Mahasiswa
  • Advanced
  • *
  • Posts: 977
  • Reputasi Poin: 44
  • Gender: Male
  • New Logo, New Concept, New Technology
    • View Profile
    • Facebook
Re: Algoritma 1
« Reply #12 on: September 17, 2008, 05:11:43 PM »
Mau nanya dunk, kk Anta....

Code: [Select]
SQRT - akar pangkat dua
SQR - pangkat dua
ABS - absolute

Kalau untuk pangkat lebih dari dua dan akar pangkat lebih dari dua... pake apa ? Hehe...

Thx sebelumnya....
Supported by :


Offline Anta

  • Developer
  • Advanced
  • *
  • Posts: 710
  • Reputasi Poin: 39
  • Gender: Male
    • View Profile
Re: Algoritma 1
« Reply #13 on: September 19, 2008, 01:55:33 AM »
Mau nanya dunk, kk Anta....

Code: [Select]
SQRT - akar pangkat dua
SQR - pangkat dua
ABS - absolute

Kalau untuk pangkat lebih dari dua dan akar pangkat lebih dari dua... pake apa ? Hehe...

Thx sebelumnya....

kalo pangkat lebih 2 tuh kalo ga salah pake Power(bilangan, pangkat).
jangan lupa uses Math pada unit.
kalo akar ga tau tuh :D
jarang pake soalnya. maklum bego matematika.

Offline headscout

  • Mahasiswa
  • Advanced
  • *
  • Posts: 977
  • Reputasi Poin: 44
  • Gender: Male
  • New Logo, New Concept, New Technology
    • View Profile
    • Facebook
Re: Algoritma 1
« Reply #14 on: September 20, 2008, 09:17:21 AM »
kalo pangkat lebih 2 tuh kalo ga salah pake Power(bilangan, pangkat).
jangan lupa uses Math pada unit.
kalo akar ga tau tuh :D
jarang pake soalnya. maklum bego matematika.

Wiw..... thx kk ^^
Supported by :