Friday, December 20, 2013

Membuat Game Tetris menggunakan Freepascal

Bikin game mempergunakan compiler freepascal bisa ga sih? bisa donk, walaupun freepascal masihlah secara default masihlah text based kita bisa kok membikin game.
Sebenarnya sih game apa pun bisa kita buat dengan compiler yahuud satu ini. Mulai dari game text based sampe game 3D.
Mau tau game yang bisa dibikin dalam mode textbased dengan mempergunakan freepascal? Tetris ini jawabannya!

Download Source code Lengkap:Tutorial dan source code tetris

Wednesday, December 18, 2013

Array pada Pemrograman Komputer


Array ialah sekelompok data sejenis yang disimpan ke dalam variabel dengan nama yang sama, dengan memberi indeks pada variabel untuk membedakan antara yang satu dengan yang lain.

VARIABEL ARRAY
            nama_variabel[indeks]

ketentu sajaan nama variabel arrray sama dengan nama variabel biasa.
indeks menunjukan nomor dari variabel .

DEKLARASI VARIABEL ARRAY

BU                  : tipe nama_variabel[indeks];

misal           : float bil[10];
            deklarasi variabel array dengan nama bil yang akan menampung 10 data             yang  bertipe  float.  Indeks  10  menunjukan  variabel  bil  tersusun  dari  10            elemen, di mana setiap elemen akan menampung satu data.

Indeks array dimulai dari nol(0) , sedang nomor elemen biasanya dimulai dari satu(1). Nomor elemen dapat dibikin sama dengan nomor indeks untuk mempergampang pengerjaan program yakni dengan memberi indeks satu lebih banyak dari jumlah data yang diperlukan, sehingga menjadi :
            float bil[11]

INISIALISASI  ARRAY 1 DIMENSI
Inisialisasi  dapat dilaksanakan bersama dengan deklarasi atau tersendiri. Inisialisasi suatu array ialah dengan meletakkan elemen array di antara tanda kurung kurawal {}, antara elemen yang satu dengan lainnya dipisahkan koma.
            int bil[2] = {4,1,8}

            bil[0] = 4
            bil[1] = 1
            bil[2] = 8

AUTOMATIC ARRAY ialah Inisialisasi array dilaksanakan di dalam fungsi tertentu saja. Hanya  compiler C yang berstandar ANSI C yang dapat menginisialisasikan automatic array.
Tekhnik menginisialisasikan  array dari compiler yang tak mengikuti standar  ANSI C:
1. Diinisialisasikan di luar fungsi sebagai variabel GLOBAL/EXTERNAL ARRAY.
            int bil[2]={0,0,0};
            main()
           
2. Diinisialisasikan didlm fungsi sebagai variabel LOKAL/STATIC ARRAY.
            main()
            {
                        static int bil[2]={0,0,0};
                        .........

Pada automatic array yang tak diinisialisasikan , elemen array akan mempunyai nilai yang tak beraturan. Bila global & static array tak diinisialisasi maka semua elemen array secara otomatis akan diberi nilai nol(0).

misal :
main()
{
            int y;
            int hitung=0;
            int x[0];
            for(y=0;y<5;y++)
            {
                        hitung+=y;
                        x[y]=hitung;
                        printf("%3d - %3d\n",y,x[y]);
            }
}

OUTPUT:
0-  0
1-  1
2-  3
3-  6
4-  10

MENDEFINISIKAN JUMLAH ELEMEN ARRAY DALAM VARIABEL
Besarnya variabel indeks dapat ditentu sajakan dengan mempergunakan
preprocessor directives #define
#define N 40
main()
{
            int no[N],penghasilan[N],gol[N],status[N],juman[N];

Bila besari pati indeks akan diubah menjadi 50, cukup diganti dengan
#define N 50

ARRAY 2 DIMENSI
            nama_variabel [indeks1][indeks2]

indeks1          : jumlah/nomor baris
indeks2          : jumlah/nomor kolom
Jumlah elemen yang dipunyai array 2 dimensi dapat ditentu sajakan dari hasil perkalian          indeks1 * indeks2

misalnya : array A[2][3] akan mempunyai 2*3 = 6 elemen.

main()
{
            float  bil [5] [5]
            .......

dapat dituliskan dengan #define
#define N 5
main()
{
            float bil [N]  [N]
            .......

INISIALISASI ARRAY 2 DIMENSI
main()
{
            float bil[2] [3] =
            { { 1,2,3},         /*baris 0*/
              { 4,5,6},         /*baris 1*/
            }

elemen bil [0] [0] = 1
elemen bil [0] [1] = 2
elemen bil [0] [2] = 3
elemen bil [1] [0] = 4
elemen bil [1] [1] = 5
elemen bil [1] [2] = 6

misal :
main()
{
            int x[3][5];
            int y,z;
            int hitung=0;
            for(y=0;y<3;y++)


            {
                        printf("y = %d\n",y);
                        for(z=0;z<5;z++)
                        {
                                    hitung+=z;
                                    x[y][z] = hitung;
                                    printf("%/t%3d - %3d\n",z,x[y][z]);
                        }
            }
}

OUTPUT:
y = 0
   0-  0
   1-  1
   2-  2
   3-  6
   4-  10
y = 1
   0-  10
   1-  11
   2-  13
   3-  16
   4-  20
y = 2
  0-  20
  1-  21
  2-  23
  3-  26
  4-  30

STRING dan ARRAY
1. Pada string   terkandung karakter null(\0) di akhir string
2. String sudah pastii array, array belum tentu saja string

CONTOH - CONTOH :
1. array dengan pengisian input melalui keyboard
            baca_input()
            {
                        float nilai[10];
                        for(i=0;i<10;i++)
                        scanf("%d",&nilai[i]);
            }

2. Fungsi yang mencetak isi array dari akhir ke awal
            cetak_array()
            {
                        float nilai[10];
                        for(i=9;i>=0;i--)
                        scanf("%3f",nilai[i]);
            }
3. Menghitung rata - rata isi array nilai
            rata_rata()
            {
                        float nilai[10],jum*rata;
                        for(i=0,jum=0;i<=9;i++)
                                    jum+=nilai[i];
                                    rata=jum/i;
            }

4. Mencari nilai paling besar
            besar()
            float temp,nilai[10];
            {
                        for(temp=nilai[0],i=1;i<=9;i++)
                        if(nilai[i] > temp)
                                    temp=nilai[i];
            }
            return(temp)                  

Tuesday, December 17, 2013

Jenis-Jenis Array pada pemrograman



  • Array Satu Dimensi
Array satu dimensi ialah suatu array yang tersusun dari 1 subskrip array, yakni jumlah data maksimum.
Bentuk umum :
Tipe_data nama_array[jumlah_maks_data];
misal :
int Nilai[5];        nilai [1]   nilai [2]      nilai [3]       nilai [4]     nilai [5]
70 80 82 60 75
Catatan :
String juga sebenarnya ialah array yang bertipe karakter. Jumlah elemen array menyatakan jumlah string.
  • Array Dua Dimensi
Array dua dimensi ialah suatu  array yang tersusun dari 2 subskrip, yakni jumlah elemen baris dan jumlah  elemen kolom.
Bentuknya dapat berupa matriks atau tabel.
  • Deklarasi array :
Tipe_array nama_array[baris][kolom];
  • Tekhnik mengakses array :
Untuk mengakses array, misalnyanya kita ingin mengisi elemen array baris 2 kolom 3 dengan 10 maka perintahnya ialah sbb :
X[1][2] = 10;
  • Untuk mengisi dan menampilkan isi elemen array ada dua cara yakni :
  • Row Major Order (secara baris per baris)
  • Column Major Order (secara kolom per kolom)
  • Array Multidimensi
Array multidimensi ialah suatu array yang mempunyai subskrip lebih dari dua. Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun array dimensi dua.
Bentuk umumnya yakni :
tipe_array nama_array[ukuran1][ukuran2]…[ukuranN];
misal :
float X[2][4][3];
X[0][0][0] X[0][0][1] X[0][0][2] X[1][0][0] X[1][0][1] X[1][0][2]
X[0][1][0] X[0][1][1] X[0][1][2] X[1][1][0] X[1][1][1] X[1][1][2]
X[0][2][0] X[0][2][1] X[0][2][2] X[1][2][0] X[1][2][1] X[1][2][2]
X[0][3][0] X[0][3][1] X[0][3][2] X[1][3][0] X[1][3][1] X[1][3][2]


Monday, December 16, 2013

Program sederhana Pemrograman Pascal 1
Dalam bahasa Pemprograman Pascal selain mencetak hasil program ke layar kita juga dapat memberikaan masukkan / inputan ke program yang kita buat untuk selanjutnya di proses.


Input berguna untuk membikin aplikasi yang kita buat jadi lebih dinamis, jadi kawan - kawan tak lagi mesti merubah coding cuma karena ingin merubah variable nilai yang akan di proses.
Dalam Pascal, ada 2 sytax yang di gunakan untuk mendapatkan input.

ke 2 nya ialah READ dan READLN.

Gimana cara mempergunakannya? dan apa bedanya? yuk langsung aja kita bahas bersama-sama :D

Perbedaan dari READ dan READLN ialah READ mengambil input pada baris yang sama sedangkan READLN mengambil input pada baris baru.

Bingung? yuk kita coba langsung praktek aja.

Input Integer / Numerik

Masih inget sama script untuk menghitung luas persegi panjang sebelumnya?
yups, kali ini script nya akan kita modifikasi dengan menambahkan input panjang dan lebar.

Seperti inilah script lengkapnya :
Program. 
 
Hasilnya: contoh kita inputkan Panjang 20 dan Pebar 30
Masukkan Panjang : 20 Masukkan Lebar   : 30 Luas Persegi Panjangnya ialah : 600

Selanjutnya misal input dalam percabangan, kita bosa modifikasi dari script menampilkan Grade nilai di article percabangan IF
program ifKahsus3
Hasilnya : contoh kita masukkan nilai 70
Nilai anda ialah B

misal input dalam perulangan
program khasus2; var      baris,sepasi,piramit1,piramit2,jumbaris :integer; begin      Write('Masukkan Jumlah Baris : ');Read(jumbaris);           for baris :=1 to jumbaris do // for pertama kali     begin          for sepasi := jumbaris downto baris do // for ke 2          begin               write(' '); // mencetak segitiga spasi          end; // akhir for 2                    for piramit1 := 1 to baris do // for 3          begin               write('x'); // mencetak segitiga x 1          end; // akhir for 3                    for piramit2 := 2 to baris do // for 4          begin                write('x'); // mencetak segitiga x 2          end; // akhir for 4                    writeln; // mencetak baris baru     end; // akhir for pertama kali     readln; end.
Hasilnya ialah : contoh kita inputkan jumlah baris 4
    x    xxx   xxxxx  xxxxxxx
Done!! gimana? gampang kan? hehe, syntax input ini dapat di implementasikan ke berbagai macammacam aplikasi yang kita buat (dinamis/ pengolah tertentu saja).

Sunday, December 15, 2013

Program sederhana Pemrograman Pascal 2
Tidak seperti dalam bahasa pemprograman lain. dalam Pascal tak ada/ tak perlu perlakuan khusus untuk mendapatkan nilai dari input.
jadi walaupunpun typenya ialah character/integer untuk mengambilnya tata caranya ialah sama.
tetapi perlu di ingat bahwasanya input yang dimasukkan mestilah berjenis/ bertype yang sama dengan variable penampungnya.

semisalnya integer/float dll berarti mestilah numerik (0-9)
sedangkan character/sctring bisa berisi semua character.

A. Input Character

Disini kita akan coba modifikasi program kita yang menghitung luas persegi panjang dari bahasan kita sebelumnya.
kita tambahkan 1 khasus, yakni kita ingin bisa melaksanakan perhitungan luas secara berulang kali tanpa mesti keluar dari program yang kita buat.

jadi kita membutuhkan batuan dari perulangan tak tetap / tak pastii yakni REPEAT-UNTIL, serta input parameter yang dapat mengindikasikan apa tetap akan melaksanakan perhitungan ataukah keluar dari program

Script lengkapnya seperti berikut :

Program LuasPersegiPanjang; Uses crt; Var  Luas,p,l : integer;   lagi : char; // mendeklarasikan indikator parameter  Begin  REPEAT  begin    Write('Masukkan Panjang : ');Read(p);    Write('Masukkan Lebar   : ');Readln(l);        Luas := p * l;  //perhitungan luas disimpan pada variable Luas    Writeln('Luas Persegi Panjangnya ialah : ',Luas);     write('Apakah anda ingin melaksanakan perhitungan kembali[y/n] ? ');read(lagi);    // mengambil indikator parameter, jikalau berisi n maka akan keluar dari program jikalau tak maka program akan diulang/jalankan kembali    Readln();  end;  UNTIL lagi = 'n';  clrscr; End.
hasilnya :
Masukkan Panjang : 20 Masukkan Lebar   : 30 Luas Persegi Panjangnya ialah : 600 Apakah anda ingin melaksanakan perhitungan kembali[y/n] ? y Masukkan Panjang : 92 Masukkan Lebar   : 41 Luas Persegi Panjangnya ialah : 3772 Apakah anda ingin melaksanakan perhitungan kembali[y/n] ? n

B. Input string
Sama dengan input Character, seperti di awal tadi kita sebutkan, bedanya ialah di variable penampung nya.

contoh khasus : kita ingin menampilkan perulangan satu kata yang di inputkan sebanyak nilai variable yang di inputkan pula.

bagaimana tata caranya?
Kali ini karena perulanganya tetap (sebanyak nilai yang di inputkan) maka kita membutuhkan bantuan dari FOR.

Begini script lengkapnya :
program misal2; var    y,i : integer;    x   : string; begin    write('Masukkan kata : ');read(x); // variable penampung kata    write('Kata akan diulang sebanyak ? ');read(y);    for i := 1 to y do // var penampung batas perulanagan     begin       writeln(x);    end;    readln;    readln; end.
hasilnya :
Masukkan kata : aku Kata akan di ulang sebanyak ? 10 aku aku aku aku aku aku aku aku aku aku