free pascal source code and c++ source code
This blog is about pascal programming and c++ programming.You can find many source code at pascal programming and c++ programming in there. for example ;permutation,combination,deretfibonacci,encrypt and decrypt,pangkat,factorial and ect.
Tuesday, November 30, 2010
Thursday, November 5, 2009
Membuat program quene dengan bahasa pascal (program antrian kereta api,antrian loket karcis,antrian pendaftaran spmb,dll)
Pada artike kali ini kita akan bahsa bagaimana cara membuat program antrian (quene) dengan bahasa pascal.Anda banyak contoh antrian yang bisa kita implementasikan pada program ini akan tetapi sebagai contoh kita akan gunakan contoh pada sistem antrian pendaftaran SPMB.
Ada beberapa hal yang akan kita basas pada program ini yaitu :
- Cetak Antrian
- Tambah Antrian Pendaftar
- Ambil Orang yang selesai daftar'
- Cari Seseorang dalam Antrian
- Seseorang meninggalkan antrian
- Seseorang menyerobot antrian
- Loket Pendaftaran ditutup
Pada tiap pembahasan tersebut kita akan gunakan procedur tertentu.Langsung saja untuk mebuat program antrian kita gunakan :
Inilisasi awal list
Procedure baru(x: string; var tunjuk: antrian) ;beginnew(tunjuk);tunjuk^.isi := x;tunjuk^.next := nil;end;
function cek suatu list kosong atau tidak
function isempty(depan,belakang:antrian):boolean;beginisempty:= (depan=nil) and (belakang=nil)=trueend;
Sedangkan untuk program pada sistem antrian SPMB adalah seperti dibawah ini :
program antrian_SPMB;uses wincrt;type antrian = ^node;node = recordisi : string[10];next : antrian;end;var dpn, blk : antrian;pointer : string;x : string;cr : string;pil :char;{============================================================}{Procedure identitas: untuk menampilkan identitas kita}procedure identitas;beginwriteln('+-----------------------------------+');writeln('+ Nama : Riky Bagus Muhajir +');writeln('+ NIM : M0508117 +');writeln('+ Program Antrian Pendaftaran SPMB +');writeln('+-----------------------------------+');end;{============================================================}{procedure baru digunakan untuk inisialisasi awal list}Procedure baru(x: string; var tunjuk: antrian) ;beginnew(tunjuk);tunjuk^.isi := x;tunjuk^.next := nil;end;{============================================================}{function isempty digunakan untu mengecek apakah suatu list kosong atau tidak}function isempty(depan,belakang:antrian):boolean;beginisempty:= (depan=nil) and (belakang=nil)=trueend;{============================================================}{Fucntion cari digunakan untuk mencari mengecek apakah seseorang ada pada antrian atau tidak}Function cari(x: string; depan:antrian) : boolean;var tunjuk : antrian;ada,kosong: boolean;beginada := false; tunjuk := depan;kosong:= isempty(dpn,blk);if kosong=false then beginwhile (tunjuk <> nil) and (ada=false) doif tunjuk^.isi = x thenada := trueelsetunjuk := tunjuk^.next;end;cari:=ada;end;{============================================================}{procedure tambahantri digunakan untuk menambakan jumlah orang dalam antrian}procedure tambahantri(var belakang:antrian);var x:string;tunjuk:antrian;beginwrite('Masukan nama orang yang mau masuk antrian : ');readln(x);baru(x,tunjuk);belakang^.next:=tunjuk;belakang:=tunjuk;end;{============================================================}{prosedure hapusdpn diguakan untuk menghapus list dalam antrian}procedure hapusdpn(var depan,belakang:antrian);var bantu:antrian;beginif isempty(depan,belakang) thenwriteln('Antrian Kosong')else if depan=belakang thenbegindepan:=nil;belakang:=nilendelsebeginbantu:=depan^.next;depan:=bantu;end;end;{============================================================}{prosedure slesaiantri digunakan untuk mengambil orang yang telah selesai antri}procedure slesaiantri(var depan,belakang:antrian;varx:string);beginif dpn=nil thenx:='Antrian Kosong'elsebeginx:=dpn^.isi;hapusdpn(depan,belakang);end;end;{============================================================}{procedure hapusx digunakan utk mengambil seseorang dari antrian}{sebagai contoh ketika seseorang ingin ketoilet atau capek setelah lama mengantrimaka iya meninggalkan antrian}procedure hapusx(var depan,belakang:antrian);var bantu,hapus:antrian;ada:boolean;y:string;beginwrite('Masukan nama orang yang mau meninggalkan antrian : ');readln(y);if isempty(depan,belakang) thenwriteln('Antrian Kosong')else if depan=belakang thenbegindepan:=nil;belakang:=nilendelsebeginbantu:=depan;hapus:=depan;ada:=false;while (bantu<>nil) do beginif bantu^.isi=y thenif bantu=depan thendepan:=bantu^.nextelsehapus^.next:=bantu^.next;hapus:=bantu;bantu:=bantu^.next;end;end;end;{============================================================}{ Procedure BuatAntrian untuk membangun antrian dengan input data secara interaktif}procedure buatantrian (var depan,belakang: antrian);Var c : char; tunjuk : antrian;i:integer;begini:=0;depan := nil; belakang := nil;repeati:=i+1;write('masukan nama ke-',i,' =');readln(x);baru(x,tunjuk);if isempty(depan,belakang) thenbegindepan := tunjuk ;belakang := tunjuk;endelse beginbelakang^.next := tunjuk;belakang :=tunjuk;end;repeatwrite('tambah data yang antri [Y/T] = ');readln(c);until c in ['T','t','y','Y'];until c in ['T','t'];end;{============================================================}{procedure sisiptengah digunakan untuk memasukkan seseorang yang menyerobot antrian}procedure sisiptengah(var depan,belakang: antrian);var baru,bantu : antrian;x,y : string;beginwrite('Masukan nama orang yang menyerobot : ');readln(y);write('menyerobot dibelakang ( masukan salah satu nama yang telah antri) : ');readln(x);bantu:=depan;while bantu^.next <> nil dobeginif bantu^.isi= x thenbeginnew(baru);baru^.isi := y;baru^.next:=bantu^.next;bantu^.next:=baru;end;bantu:=bantu^.next;end;end;{============================================================}{Procedure Cetak untuk mencetak isi Antrian,pintu keluar antrian disebelah kanan danpintu masu antrian disebelah kiri}procedure cetak(depan:antrian;var output:string);var bantu:antrian;y:string;beginbantu:=depan;output:=' Loket Pendaftaran';if isempty(dpn,blk) then output:='Antrian Kosong'else beginwhile bantu<>nil dobeginy:=bantu^.isi;output:=y+'->>'+output;bantu:=bantu^.next;end;output:='pintu masuk antrian ->>'+output;end;end;{============================================================}beginscreensize.y:=300;identitas;writeln;writeln('=====================================');writeln(' Antrian Awal Pendaftar SPMB ');writeln('Masukan data orang yang telah antri: ');writeln('=====================================');writeln;buatantrian(dpn,blk);repeatrepeat{menu utama}writeln;writeln;writeln(' Simulasi: ');writeln(' ANTRIAN PENDAFTARAN SPMB ');writeln('-----------------------------------');writeln('[1] Buat Antrian Baru ');writeln('[2] Cetak Antrian ');writeln('[3] Tambah Antrian Pendaftar ');writeln('[4] Ambil Orang yang selesai daftar');writeln('[5] Cari Seseorang dalam Antrian ');writeln('[6] Seseorang meninggalkan antrian ');writeln('[7] Seseorang menyerobot antrian ');writeln('[8] Loket Pendaftaran ditutup ');writeln('-----------------------------------');write('Pilihan anda : ');pil:=readkey;writeln(pil);writeln;until (pil>='1') and (pil<='8');{case pil of mengacu pada menu pilihan yang akan mengaktifkan salah satu procedureyang dipilih}case pil of'1' :beginbuatantrian(dpn,blk);writeln;writeln;writeln;end;'2' :begincetak(dpn,pointer);writeln(pointer);writeln;writeln;writeln;end;'3' :begintambahantri(blk);writeln;writeln('setelah ditambah antrian menjadi : ');cetak(dpn,pointer);writeln(pointer);writeln;writeln;writeln;end;'4' :beginslesaiantri(dpn,blk,x);writeln('',x,' Telah selesai mendaftar,maka ia keluar dari antrian');writeln;writeln('Antrian menjadi :');cetak(dpn,pointer);writeln(pointer);writeln;writeln;writeln;end;'5' :beginwrite('Masukan nama orang yang di cari : ');readln(cr);if cari(cr,dpn)=true thenwriteln('',cr,' ada dalam antrian')elsewriteln('',cr,' tidak ada dalam antrian');writeln;writeln;writeln;end;'6' :beginif not isempty(dpn,blk) thenbeginwriteln('antrian awal');cetak(dpn,pointer);writeln(pointer);hapusx(dpn,blk);writeln('Antrian Menjadi : ');cetak(dpn,pointer);writeln(pointer);writeln;writeln;writeln;endelsewriteln('Antrian Kosong');end;'7' :beginwriteln('Angtrian sebelum ada yang menyerobot');cetak(dpn,pointer);writeln(pointer);writeln;sisiptengah(dpn,blk);writeln;writeln('Setelah ada yang menyerobot antrian menjadi :');cetak(dpn,pointer);writeln(pointer);writeln;writeln;writeln;end;'8' :beginwriteln(' Loket telah ditutup ');writeln('Antrian dilanjutkan hari berikutnya');exit;end;end;until (pil='8');end.end.
Apabila program di ata kita run maka akn menghasilkan output seperti dibawah ini :
OUTPUT PROGRAM
Sebagai contoh diawal antrian kita masukan input seperti dibawah ini :Diantrian pertama kita masukan “RIKY” antrian kedua kita masukan”ROMA”,dan diantrian ketiga kita masukan “FIAN”.
Setelah kita inputkan data antrian awal seperti yangdicontohkan diatas kemuduian kita tekan enter maka akan keluar menu seperti dibawah ini :
Bila pilihan kita masukkan angka 1 maka dilakukan pembuatan antrian awal baru
Jika pilihan kita masukkan angka 2 maka akan dilakukan program cetak antrian yang akan menghasilkan output spt dibawah ini :
Jika pilihan kita masukkan angka 3 maka akan dilakukan program tambah antrian.Procedure tambahantri akan menambahkan orang pada antrian dan ketika ditambahkan orang baru maka orng tersebut akan berada diurutan paling belakan dari antrian sebelumnya.Sebagai contoh kita akan tambahakan “BUDI” kedalam antrian yang sudah ada :
Jika pilihan kita masukkan angka 4 maka akan dilakukan program pengambilan list dari antrian.Procedure slesaiantri akan mengambil list yang masuk paling awal dalam antrian.Karena pada list yang kita buat diawal tadi “RIKY” masuk diurutan paling awal maka dia yang akan keluar paling awal juga.Jika pilihan kita masukkan angka 5 maka akan dilakukan pencarian suatu data dari deretan list.Dalam hal ini kita misalkan pencarian seseorang didalam suatu antrian.Procedure cari akan mengecek satu demi satu data yang ada yang ada dalam antrian.Sebagai contoh kita akan mencari nama “FIAN”.Jika data yang kita cari ada dalam antrian maka :
Sedangkan jika data yang kita cari tidak ada dalam rangkaian maka : Misal kita akan cari nama “DEWI” dalam antrian,karena “DEWI” tidak ada dalam antrian diatas tadi maka :
Jika pilihan kita masukkan angka 6 maka akan dilakukan pengambilan data(nama)tertentu dari deretan antrian.Procedure hapusx akan mencari satu demi satu data yang akan kita hapus dari deretan antrian,jika data yang ingin kita hapus itu ada dalam antrian maka data tersebut akan dihapus.Sebagai contoh karena “FIAN” ingin pergi ketoilet maka ia kluar dari antrian :
Jika kita masukkan angka 7 maka akan dilakukan program penyrobotan dalam suatu antrian.Sebagai cotoh “DONY” akan menyerobot dibelakang “ROMA” maka:
Jika hari sudah sore maka tempat pendaftaran peserta SPMB ditutup dan untuk menutup tempat pendaftaran pilihan kita isi angka 8 :
Selamat mencoba..
Monday, October 19, 2009
Program dan algoritma mengecek suatu bilangan merupakan bilangan genap atau ganjil dengan bahasa pascal
Kali ini kita akan bahas bagaimana mengecek suatu bilangan merupakan bilangan ganjil atau genap.Suatu bilangan merupakan bilangan genab jika bilangan tersebut habil dibagi 2,sedangkan bilangan ganjil merupakan bilangan yang bersisa bila dibagi angka 2.
Algoritma cek bilangan genap/ganjil :
1. readln (bil); 2. if bil mod 2 = 0 then write('Bil tsb genap'); 3. if bil mod 2 <> 0 then write('Bil tsb ganjil'); 4. end
Source code program cek bilangan genap/ganjil.
PROGRAM cek_bilangan_ganjil_genap;uses wincrt;var bil : integer;beginclrscr;write('Masukkan suatu bil :');read(bil);if bil mod 2 = 0thenbeginwrite('Bil tsb genap');end;if bil mod 2 <> 0thenbeginwrite('Bil tsb ganjil');end;readln;end.
jika progrm tersebut kita run maka akan menghasilkan output seperti dibawah ini :