Halaman

Tampilkan postingan dengan label Algoritma Pascal. Tampilkan semua postingan
Tampilkan postingan dengan label Algoritma Pascal. Tampilkan semua postingan

Sabtu, 26 September 2009

Selection Sort

program selection_sort;
uses wincrt;
var
data :array[1..100] of integer;
i,j,k,n,temp,indeksmin:integer;
begin
write('Masukkan banyak data = ');readln(n);
for i:=1 to n do
begin
write('Masukkan data ke ',i,' = ');readln(data[i]);
end;
for i:=1 to n do
begin
indeksmin:=i;
for j:=i+1 to n do
begin
if data[j] < data[indeksmin] then
begin
indeksmin :=j;
end;
end;
temp := data[indeksmin];
data[indeksmin] := data[i];
data[i] := temp;
end;
writeln('Setelah diurutkan = ');
for k:=1 to n do
begin
writeln(data[k]);
end;
readln;
end.

Insertion Sort

program insertion_sort;
uses wincrt;
var
i,j,k,n,sisip:integer;
data:array[1..100] of integer;
begin
clrscr;
write('Masukkan banyak data = ');readln(n);
for k:=1 to n do
begin
write('Masukkan data ke ',k,' = ');readln(data[k]);
end;
for i:=1 to n-1 do
begin
if data[i]>data[i+1] then
begin
sisip:=data[i+1];
j:=i;
while (j>=1) and (data[j]>sisip) do
begin
data[j+1]:=data[j];
data[j]:=sisip;
j:=j-1;
end;
end;
end;
writeln('Setelah diurutkan :');
for k:=1 to n do
begin
writeln(data[k]);
end;
readln;
end.

Senin, 09 Maret 2009

Program Untuk Menghitung Karakter

program cari_huruf_tertentu;
uses wincrt;
var
s:string;
ci,ca,i,p_char:integer;
c:char;
procedure start; {tombol untuk memulai membaca karakter}
begin
ca:=0;
ci:=0;
end;
procedure adv;{tombol untuk menggeser pita karakter}
begin
ci:=ci+1;
end;
procedure inc;{tombol untuk menaikkan nilai ca/jumlah karakter yang dicari}
begin
ca:=ca+1;
end;
begin
write('Masukkan kata/kalimat diakhiri titik = ');readln(s); {menginputkan kalimat}
write('Masukkan huruf yang akan di cari = ');readln(c);{menginputkan huruf yang akan dicari}
start;
while (s[ci]<>'.') do {perulangan sampai tanda titik}
begin
if (s[ci]=c) then {jika ada karakter yang dicari dalam kalimat}
begin
inc; {jumlah karakter yang dicari diincrement}
adv; {pita karakter digeser}
end
else
adv; {pita karakter digeser}
end;
p_char:=ci-1;
writeln(ca,' huruf ',c,' dari ',p_char,' huruf'); {output}
readln;
end.

Sabtu, 07 Maret 2009

Mesin Integer dan Mesin Karakter




Mesin Karakter

Awalnya pita karakter berisi karakter-karakter:A ,L ,G ,O ,R ,I ,T ,M ,A . karakter yang pertama terilhat di jendela (CC) adalah A. setelah ditekan tombol ADV maka pita bergeser dan karakter L muncul di jendela. Jika tombol ADV ditekan lagi maka jendela akan menampilkan karakter G.Jika tombol ADV ditekan terus sampai tanda titik (“.”) muncul,maka lampu EOP akan menyala dan mesin tidak dapat digunakan lagi.

Mesin Integer

Pada mulanya nilai CI bernilai 1.
Setelah tombol INC ditekan maka nilai CI ditambah 1 sehingga menjadi 2.
Apabila tombol INC ditekan lagi maka CI akan ditambah 1 lagi menjadi 3 dan seterusnya.
Setelah tombol RESET ditekan maka nilai CI=0 ,artinya nilai CI di-nolkan.
Baca juga pemanfaatan kedua mesin ini: klik di sini dan posting sebelumnya.

Kamis, 05 Maret 2009

Mesin Abstrak (Abstract Machine)

Pada kesempatan kali ini saya akan mencoba mengulas mesin abstrak yang merupakan bagian dari algoritma dan penerapan dalam pemrograman.Mesin abstrak adalah salah satu aplikasi sederhana dari penggunaan procedure pada pemrograman. Mesin abstrak adalah suatu mesin yang dianggap ada dan diasumsikan dapat melakukan mekanisme yang didefinisikan mesin tersebut. Mungkin bahasa diatas terlalu rumit,secara sederhana mesin abstrak adalah model nyata atau simulasi dari pemrograman. Dengan mesin abstrak pemrogram dapat membuat mekanisme yang mudah dibayangkan.Ada dua mesin abstrak yang umum digunakan yaitu mesin integer dan mesin karakter.

Mesin Integer
Mesin Integer terdiri dari:
• Sebuah jendela yang menampilkan angka integer pada saat tertentu. Angka integer di jendela itu disebut Current Integer(CI).
• Sebuah tombol RESET untuk mengembalikan CI pada angka nol.
• Sebuah tombol INC (Increment) untuk menambahkan angka 1 pada nilai CI.

Mesin Karakter
Mesin karakter terdiri dari:
• Sebuah jendela yang ukurannya sebesar satu karakter saja. Karakter yang terlihat di jendela disebut Current Character (CC) dan karakter lain tidak terlihat.
• Pita yang berisikan deretan karakter dan diakhiri tanda titik (“.”). Pita ini adalah gambaran nyata dari array of char atau juga dikenal sebagai string. Jika pita ini hanya berisi tanda titik maka pita ini dianggap sebagai pita kosong.
• Sebuah tombol START untuk memulai pembacaan karakter.
• Sebuah tombol ADV (Advance) yang berfungsi untuk menggeser pita karakter yang bertujuan menampilkan karakter berikutnya.
• Sebuah lampu EOP (End of Position) yang menyala jika tanda titik (“.”) sudah terbaca. Lampu menyala adalah gambaran kondisi status TRUE dan padam berarti FALSE.

Mungkin pada posting yang lain saya akan menggambarkan cara kerja mesin-mesin tersebut dan macam-macam mesin lain beserta aplikasinya dalam pembuatan program berbasis mesin integer dan karakter. Lanjutan.

Minggu, 01 Maret 2009

Program Pascal Bubble Sort

program bubble_sort;
uses wincrt;
var
i,n,j:integer;
a:array[1..100] of integer;
procedure buble;
var
z:integer;
begin
for i:=1 to n-1 do
begin
for j:=n downto i+1 do
begin
if a[j] < a[j-1] then
begin
z:= a[j];
a[j]:= a[j-1];
a[j-1]:= z;
end;
end;
end;
end;
begin
write(' Masukkan jumlah elemen array = ');readln(n);
for i:= 1 to n do
begin
write(' Masukkan elemen ke ',i,' = ');readln(a[i]);
end;
buble;
for j:= 1 to n do
writeln(a[j]);
readln;
end.

Sabtu, 31 Januari 2009

Membuat Program Pascal untuk Menampilkan Nilai Terbesar dan Terkecil

program terbesar_terkecil;
uses wincrt;
var
i,n:integer;
data:array[1..100]of integer;
x,y:longint;
begin
x:=-999999;
y:=999999;
write(' Masukkan jumlah data = ');readln(n);
for i:=1 to n do
begin
write(' Masukkan data ke ',i,' = ');readln(data[i]);
end;
for i:=1 to n do
begin
if data[i] > x then
x:=data[i];
if data[i] < y then
y:=data[i];
end;
writeln(' Bilangan Terbesar = ',x);
writeln(' Bilangan Terkecil = ',y);
readln;
end.

Membuat Program Pascal untuk Barisan Fibonacci 2

program fibonaci2;
uses wincrt;
var
x,y,z,i,n:longint;
begin
x:=0; {nilai awal fibonaci = 0}
y:=1; {nilai kedua fibonaci = 1}
write(' Masukkan banyaknya bilangan fibonaci = ');readln(n); {menginputkan banyaknya bilangan fibonaci}
writeln(x); {menampilkan nilai awal fibonaci};
writeln(y); {menampilkan nilai kedua fibonaci}
for i:=1 to n-2 do {mengulang sampai n-2 karena 2 bilangan awal fibonaci telah ditampilkan}
begin
z:=x+y;{z merupakan penjumlah 2 bilangan sebelumnya yaitu x dan y}
x:=y; {nilai x kemudian diubah menjadi y}
y:=z; {nilai y kemudian diubah menjadi z(hasil penjumlah sebelumnya)}
writeln(z); {menampilkan nilai z}
end;
readln;
end.

Lihat juga edisi pertama.

Membuat Program Pascal untuk Barisan Fibonacci 1(Menggunakan Array)

program fibonaci1;
uses wincrt;
var
x:array[0..100]of longint;
i,n:integer;
begin
x[1]:=1;
x[0]:=0;
write(' Masukkan banyaknya bilangan fibonaci = ');readln(n);{meginputkan banyaknya bilangan}
for i:=1 to n do {mengulang sampai n kali}
begin
x[i+1]:=x[i]+x[i-1]; {nilai x berikutnya adalah hasil penjumlahan 2 nilai sebelumnya}
writeln(x[i-1]); {menampilkan nilai-nilai x}
end;
readln;
end.

Lihat juga edisi kedua.

Jumat, 30 Januari 2009

Membuat Program untuk Menampilkan Nilai terkecil

program bil_terkecil;
uses wincrt;
var
a,b,c,x:longint;
begin
x:=99999999;
write(' Masukkan bilangan pertama = ');readln(a);
write(' Masukkan bilangan kedua = ');readln(b);
write(' Masukkan bilangan ketiga = ');readln(c);
if (a < x) then
x:=a;
if (b < x) then
x:=b;
if (c < x) then
x:=c;
writeln(' Bilangan terkecil adalah ',x);
readln;
end.

Minggu, 25 Januari 2009

Menukar Nilai Dua Variabel dengan Variabel Bantu

program penukaran_dengan_variabel_bantu;
uses wincrt;
var
a,b,c:integer;
begin
write('inputkan a = ');readln(a);
write('inputkan b = ');readln(b);
c:=a;
a:=b;
b:=c;
writeln('Setelah ditukar');
writeln('a = ',a);
writeln('b = ',b);
readln;
end.

Kamis, 22 Januari 2009

Membuat Program untuk Menampilkan Bilangan Prima

program bil_prima;
uses wincrt;
var
i,n,j: integer;
c: boolean;
begin
write( ' Masukkan batas akhir bilangan prima = ');readln(n);
for i := 2 to n do
begin
c:= true;
for j := 2 to i-1 do
begin
if (i mod j) = 0 then
begin
c:= false;
end;
end;
if c=true then
write((i):4);
end;
readln;
end.

Selasa, 20 Januari 2009

Mencari Bilangan Terbesar dengan Array Pascal

program angka_terbesar;
uses wincrt;
var
bil:array[1..100] of integer;
i,k,n:integer;
begin
k:=-9999;
write(' Masukkan jumlah data yang akan diinputkan = ');readln(n);
for i:=1 to n do
begin
write(' Msukkan bilangan ke ',i,' = ');readln(bil[i]);
if bil[i]>k then
k:=bil[i];
end;
writeln;
writeln(' Tekan ENTER untuk mengetahui bilangan terbesar!');readln;
writeln(' Bilangan terbesar = ',k);
readln;
end.

Membuat Bintang-Selang Spasi dengan Pascal

program bintang_selang_seling;
uses wincrt;
var
i,j,n:integer;
begin
write(' Masukkan inputan = ');readln(n);
for i:=1 to n do
begin
if i mod 2 =1 then
begin
for j:=1 to n do
begin
if j mod 2=1 then
write('*')
else
write(' ');
end;
writeln;
end
else
begin
for j:=1 to n do
begin
if j mod 2=0 then
write('*')
else
write(' ');
end;
writeln;
end;
end;
readln;
end.

Minggu, 18 Januari 2009

Membuat Program Tahun Kabisat

program kabisat;
uses wincrt;
var
z:integer;
begin
write(' Masukkan sebuah angka tahun = ');readln(z);
if (z mod 4=0) or(z mod 100=0) then
writeln(' Tahun yang anda masukkan adalah Tahun Kabisat')
else
writeln(' Bukan Tahun Kabisat');
readln;
end.

Sabtu, 17 Januari 2009

Membuat Persegi Panjang "Bintang" Dengan Pascal 1

program kotak_bintang;
uses wincrt;
var
i,j,panjang,lebar:integer;
begin
write('Masukkan panjang bintang = ');readln(panjang);
write('Masukkan lebar bintang = ');readln(lebar);
for i:=1 to lebar do
begin
for j:=1 to panjang do
begin
write('*');
end;
writeln;
end;
readln;
end.

Membuat Persegi Berongga dengan Pascal

program kotak_kosong;
uses wincrt;
var
i,j,s:integer;
x:char;
begin
repeat
write('Masukkan sisi persegi = ');readln(s);
if s>1 then
for i:=1 to s do
begin
if (i=1) or (i=s) then
begin
j:=1;
repeat
write('*');
j:=j+1;
until j=s;
end
else
begin
write('*');
j:=1;
repeat
write(' ');
j:=j+1;
until j=(s-1);
end;
writeln('*');
end
else
if s=1 then
begin
write('*');
end
else
begin
writeln('Sisi Persegi Harus bulat positf!');
end;
readln;
writeln('Ingin Mengulang? [Y/T]');readln(x);
until upcase (x)='T';
writeln('Program Selesai');
end.

Membuat Program Password dengan Pascal

program Password;
uses wincrt;
var
x,y:string;
i,n:integer;
begin
y:='POLITEL';
i:=0;
repeat
clrscr;
i:=i+1;
writeln('===============================================');
writeln(' Selamat Datang ');
writeln('===============================================');
write(' Masukkan Password = ');readln(x);
for n:=0 to Length (x) do
x[n]:=UpCase(x[n]);
if (x<>y) and (i<3 br="br" then="then"> begin
writeln('-----------------------------------------------');
writeln(' Password Yang Anda Masukkan Salah,Coba Lagi! ');
writeln(' Tekan ENTER! ');
writeln('-----------------------------------------------');
readln;
end
else
if(x<>y) and (i=3) then
begin
writeln('-----------------------------------------------');
writeln(' Anda gagal 3 kali,Anda tidak bisa Masuk! ');
writeln('-----------------------------------------------');
end
else
begin
writeln('===============================================');
writeln(' Selamat Anda Berhasil Masuk ');
writeln('===============================================');
end;
until (x=y) or (i=3);
readln;
end.

Membuat Program Penjumlahan Matriks

program penjumlahan_matriks;
uses wincrt;
var
matriks1,matriks2,matriks3 :array[1..4,1..4] of integer;
i,j:integer;
begin
writeln(' ============================================= ');
writeln(' Penjumlahan MATRIKS ');
writeln(' ============================================= ');
begin
writeln(' Matriks I ');
for i:=1 to 4 do
begin
for j:=1 to 4 do
begin
write(' Elemen (',i,',',j ,') = ');readln(matriks1[i,j]);
end;
writeln;
end;
end;
begin
writeln;
writeln(' Matriks I ');
writeln;
for i:= 1 to 4 do
begin
for j:= 1 to 4 do
begin
write(matriks1[i,j]:7);
end;
writeln;
writeln;
end;
writeln;
writeln;
end;
begin
writeln(' Matriks II ');
for i:=1 to 4 do
begin
for j:=1 to 4 do
begin
write(' Elemen (',i,',',j ,') = ');readln(matriks2[i,j]);
end;
writeln;
end;
readln;
end;
begin
writeln;
writeln(' Matriks II ');
writeln;
for i:= 1 to 4 do
begin
for j:= 1 to 4 do
begin
write(matriks2[i,j]:7);
end;
writeln;
writeln;
end;
writeln;
writeln;
readln;
end;
begin
writeln(' Hasil penjumlahan matriks tersebut');
for i:=1 to 4 do
begin
for j:=1 to 4 do
begin
matriks3[i,j]:=matriks1[i,j]+matriks2[i,j];
write(' ELemen (',i,',',j ,') = ',matriks3[i,j]);
end;
writeln;
end;
end;
begin
writeln;
writeln(' Matriks Hasil ');
writeln;
for i:= 1 to 4 do
begin
for j:= 1 to 4 do
begin
write(matriks3[i,j]:7);
end;
writeln;
writeln;
end;
writeln;
writeln;
end;
writeln(' ============================================= ');
writeln(' SELESAI ');
writeln(' ============================================= ');
end.

Membuat Program Perkalian Matriks

program Perkalian_Matriks;
uses wincrt;
var
a,b,c:array[1..4,1..4] of integer;
i,j,x,y:integer;
begin
clrscr;
begin
writeln(' Matriks I ');
for i:= 1 to 4 do
begin
for j:= 1 to 4 do
begin
write(' Masukkan bilangan untuk baris ke-',i,' kolom ke-',j,': '); readln(a[i,j]);
end;
writeln;
end;
end;
begin
writeln;
writeln(' Matriks I ');
writeln;
for i:= 1 to 4 do
begin
for j:= 1 to 4 do
begin
write(a[i,j]:7);
end;
writeln;
writeln;
end;
writeln;
writeln;
end;
begin
writeln(' Matriks II ');
for x:= 1 to 4 do
begin
for y:=1 to 4 do
begin
write(' Masukkan bilangan untuk baris ke-',x,' kolom ke ',y,': '); readln(b[x,y]);
end;
writeln;
end;
end;
begin
writeln;
writeln(' Matriks II ');
writeln;
for x:= 1 to 4 do
begin
for y:= 1 to 4 do
begin
write(b[x,y]:7);
end;
writeln;
writeln;
end;
writeln;
writeln;
end;
begin
writeln(' Tekan Enter Untuk Melihat Hasil Operasi dari Matriks I X Matriks II ');readln;
writeln(' M I x M II ');
writeln;
for i:=1 to 4 do
begin
for y:=1 to 4 do
begin
c[i,y]:=0;
for x:=1 to 4 do
begin
c[i,y]:=c[i,y]+a[i,x]*b[x,y];
write(' Elemen ke (',i,',',y,') = ',c[i,y]);
end;
end;
writeln;
end;
end;
writeln;
begin
writeln(' Matriks Hasil ');
writeln;
for i:=1 to 4 do
begin
for y:=1 to 4 do
write(c[i,y]:7);
writeln;
writeln;
end;
writeln;
writeln;
end;
writeln;
readln;
end.