Selasa, 22 Juni 2010

Praktikum Pemrograman Bahasa C

Contoh-contoh Pemrograman


/* Contoh Program Sederhana 1 */
main()
{
clrscr();
printf("Sebuah contoh program sederhana");
getch();
}

/* Contoh Program Sederhana 2 */
main()
{
clrscr();
printf("Saya");
printf("Belajar");
printf("Turbo C");
getch();
}

/* Contoh Program Sederhana 3 */
#include
int main(void)
{
/* Mendeklarasikan variabel X yang bertipe int */
int X;
/* Menampilkan teks sebagai informasi bagi pengguna
program (user) */
printf("Masukkan sebuah bilangan bulat : ");
/* Membaca data masukan dari keyboard */
scanf("%d", &X);
/* Menampilkan kembali data yang telah dimasukan dari
dari keyboard */
printf("Anda telah memasukan bilangan %d",X);
getch();
}


/* Contoh Program Sederhana 4 */

/* Inisialisasi suatu variabel */
main()
{
/* Deklarasi variabel */
float harga_satuan,jumlah,harga_total;
/*Membersihkan layar*/
clrscr();
/* Inisialisasi */
harga_satuan=112.50;
jumlah=50;
/*Menghitung harga total*/
harga_total=harga_satuan*jumlah;
/*Mencetak harga total*/
printf("Harga Total :%f",harga_total);
getch();
}


/* Contoh Program Sederhana 5 */
#include
#include
main()
{
int x=100;
int *p, *q;
p=&x;
q=p;
clrscr();
printf("Alamat dari x(&x) atau p adalah %u \n",p);
printf(" Isi dari x adalah *p atau %d\n\n", *p);
printf(" Q ==>%u\n",p);
printf("*Q ==>%d\n",*q);
getch();
}


/* Contoh Program Sederhana 6 */
/* Program pengenalan variabel automatis */
#include
#include /* Untuk memakai fungsi pow() */
int main() {
int B=5, e;
clrscr();
printf("Masukkan nilai pangkat : ");scanf("%d", &e);
if (e >= 0)
{
auto int hasil;
hasil=pow(B,e);
printf("%d^%d=%d",B,e,hasil);
}
getch();
}


/* Contoh Program Sederhana 7 */
#include
main()
{
float bil=2.5,nomor=30.756;
clrscr();
printf("Lebar field yang tidak ditentukan\n");
printf("Bilangan = %f\n",bil);
printf("Nomor = %f\n\n",nomor);
printf("Lebar field ditentukan\n");
printf("Bilangan = %10.2f\n",bil);
printf("Nomor = %10.2f",nomor);
getch();
}

/* Contoh Program Sederhana 8 */
#include
main()
{
clrscr();
printf("Ini Baris 1\nIni Baris 2");
printf("Ini Baris 3\n\n");
printf("Ini Baris 1\nIni Baris 2\nIni Baris 3");
getch();
}


/* Contoh Program Sederhana 9 */
#include
main()
{
clrscr();
printf("\xDA\xC4\xBF\n");
printf("\xCO\xC4\xD9");
printf("\nBell berbunyi, setelah tulisan ini\x07");
getch();
}


/* Contoh Program Sederhana 10 */
#include
main()
{
float bil1,bil2,bil3;
clrscr();
printf("Masukan bilangan pertama : ");scanf("%f",&bil1);
printf("Masukan bilangan ke-dua : ");scanf("%f",&bil2);
bil3=bil1+bil2;
printf("Total kedua bilangan : %.3f",bil3);
getch();
}


/* Contoh Program ke-11 */
/* Kasus 1: Buatlah program Bhs C untuk menghitung jumlah serta selisih
dua bilangan integer. Kemudian cetaklah hasil penjumlahan serta selisih
tadi dengan menggunakan format lebar field = 8.
Sebagai Input - bilangan 1
- bilangan 2
Sebagai Outpt - Jumlah
- Selisih
Ketentuan variabel yang digunakan:
variabel untuk nama variabel tipe
bilangan 1 bil_1 integer
bilangan 2 bil_2 integer
jumlah jumlah integer
selisih selisih integer
Tampilan/hasil di layar yang diinginkan adalah seperti berikut:
Masukan Bilangan 1 :......
Masukan Bilangan 2 :......
*/

#include
#include
main()
{
int bil_1,bil_2,jumlah,selisih;
clrscr();
printf("Masukan Bilangan 1 : ");scanf("%d",&bil_1);

printf("Masukan Bilangan 2 : ");scanf("%d",&bil_2);
jumlah=bil_1+bil_2;
selisih=bil_1-bil_2;
printf("\nJumlah kedua bilangan : %8d\n",jumlah);
printf("Selisih kedua bilangan : %8d",selisih);
getch();
}


/* Contoh Program ke-12 */
/* Operasi Arithmatic pada data karakter */
#include
main()
{
char c1,c2,c3,c4;
clrscr();
printf("Ketik karakter pertama :");c1=getche();
printf("\nKetik karakter kedua :");c2=getche();
c3=c1+c2;
c4=c1-c2;
printf("\nJumlah nilai ASCII kedua karakter tadi : %d",c3);
printf("\nKarakter ASCIInya :%c",c3);
printf("\nSelisih nilai ASCII kedua karakter tadi: %d",c4);
printf("\nKarakter ASCIInya :%c",c4);getch();
}


/* Contoh Program ke-13 */
/* Program pengenalan variabel automatis */
#include
#include /* Untuk memakai fungsi pow() */
int main() {
int B=5, e;
clrscr();
printf("Masukkan nilai pangkat : ");scanf("%d", &e);
if (e >= 0)
{
auto int hasil;
hasil=pow(B,e);
printf("%d^%d=%d",B,e,hasil);
}
getch();
}


/* Contoh Program ke-14 */
/*Operator Increment 1*/
main(){
int i,total=0;
clrscr();
for(i=0;i<=20;++i)
total+=i;
printf("Hasil For(i=0;i<=20;++i)"); /*Sebagai keterngan*/
printf("\nTotal Bilangan dari 1 hingga 20 = %d",total);getch();
printf("\nHasil For(i=1;i<=20;i+=3)");
for(i=1;i<=20;i+=2)
total+=i;
printf("\nTotal Bilangan dari 1 hingga 20 = %d",total);getch();
for(i=3;i<=20;i+=3)
total+=i;
printf("\nHasil For(i=3;i<=20;i+=3)");
printf("\nTotal Bilangan dari 1 hingga 20 = %d",total);getch();
for(i=0;i<=20;i++)
{
if((i % 3)==0)
total+=i;
}
printf("\nKeluaran For(i=0;i<=20;i++) dan jika(i%3)==0)");
printf("\nTotal Bilangan dari 1 hingga 20 = %d",total);getch();
}


/* Contoh Program ke-15 */
/* Inisialisasi Array Berdimensi satu*/
main()
{
int bil[5]={0,0,0,0,0};
int i,n;
clrscr();
/*Mengganti nilai elemen suatu array */
printf("\xBO Mengganti Nilai Elemen Suatu Array \xBO");
printf("\n----------------------------------------");
while(1)
{
printf("\nInputkan nomor elemen yang akan diganti\n");
printf("\n\tInputkan nol (0) untuk berhenti : ");
scanf("%d",&n);
if (n==0)
break;
printf("\tElemen ke %2d Nilai lama %10d Nilai baru : ",
n,bil[n-1]);
scanf("%d",&bil[n-1]);
}
/*Mencetak nilai elemen array yang baru */
printf("\n\nNilai elemen yang baru : ");
for (i=0;i<5;i++)
printf("\n\tElelemen ke %2d = %d",i+1,bil[i]);
printf("\n\nTekan sembarang tombol");
getch();
}


/*Contoh Program Array berdimensi dua
Penjumlahan dua matriks */
#define N 10
main()
{
float A[N][N],B[N][N],C[N][N];
int i,j;
float n;
char jawab;
clrscr();
printf("\xB1\xB1 Penjumlahan dua matriks bujursangkar \xB1\xB1");
/* Input dimensi matriks */
printf("\n\nInput dimensi matriks (1-10) : ");
scanf("%f",&n);
/* Input elemen matriks A*/
printf("\n\nMatriks A : ");
for (i=0;i{
printf("\nBaris ke %d\n",i+1);
for (j=0;j{
printf("\tElemen [%d][%d] : ",i+1,j+1);
scanf("%f",&A[i][j]);
}
}
/*Koreksi data Matrisk */
printf("\n\nAda data yang salah (Y/T) ?.");
jawab=getch();
if(jawab=='Y' || jawab=='y')
{
while(1)
{
printf("\nBaris ke (0 untuk stop) : ");scanf("%d",&i);
if(i==0)
break;
printf("Kolom ke : ");scanf("%d",&j);
printf("Elemen [%d][%d] Nilai lama %f akan diganti dengan ",
i,j,A[i-1][j-1]);scanf("%f",&A[i-1][j-1]);
}
}
/*Input elemen matriks B*/
printf("\n\nMatriks B : ");
for(i=0;i{
printf("\nBaris ke %d\n",i+1);
for(j=0;j{
printf("\tElemen [%d][%d] : ",i+1,j+1);
scanf("%f",&B[i][j]);
}
}
/*Koreksi Data Matrsik B */
printf("\n\nAda data yang salah (Y/T) ?");

jawab=getche();
if(jawab=='Y' || jawab=='y')
{
while(1)
{
printf("\nBaris ke (0 untuk stop) : ");
scanf("%d",&i);
if(i==0)
break;
printf("Kolom ke : ");scanf("%d",&j);
printf("Elemen [%d][%d] Nilai lama %f akan diganti dengan ",

i,j,B[i-1][j-1]);
scanf("%f",&B[i-1][j-1]);
}
}
/* Menjumlahkan matriks A dan matriks B */
for(i=0;i for(j=0;j C[i][j]=A[i][j]+B[i][j];
/*Mencetak Output*/
clrscr();
printf("\n\mJumlah Matriks A dan B adalah : ");
for(i=0;i {
printf("\n");
for(j=0;j printf("%12.3f",C[i][j]);
}
printf("\n\nTekan sembarang tombol...");
getch();
}


/* Contoh Program ke-16 */
/* Program Faktorial */
main(){
int i,bil;
float faktorial=1;
clrscr();
printf("Inputkan sebuah bilangan bulat positif : ");
scanf("%d",&bil);
for(i=1;i<=bil;++i)
faktorial*=i;
printf("\nNilai faktorialnya : %10.0f",faktorial);getch();
}


/* Contoh Program ke-17 */
/*Fungsi yang sederhana */
main()
{
char x;
while(1)
{
clrscr();
printf("\nIni kotak pertama \n");
/*Memanggil kotak 1*/
kotak1();
printf("\nIni kotak kedua \n");
/*Memanggil kotak 2*/
kotak2();
printf("\n\nKotak mana yang akan dicetak (1 atau 2) :");
x=getche();
printf("\n\n");
if (x=='1')
kotak1();
else if(x=='2')
kotak2();
else
{
printf("\nPilihan Anda Salah ");
break;
}
printf("\n\nTekan sembarang tombol ");
getch();
}
}
/* Fungsi untuk menggambar kotak 1 */
kotak1()
{
int i,j;
printf("\n");
for (i=1;i<=3;++i)
{
for (j=1;j<=6;++j)
printf("\xB1");
printf("\n");
}
}
/*Fungsi untuk menggambar kotak 2*/
kotak2()
{
int i,j;
printf("\n");
for (i=1;i<=3;++i)
{
for (j=1;j<=6;++j)
printf("\xDB");
printf("\n");
}
}


/* Contoh Program ke-18 */
/*Pengulangan tak hingga */
main()
{
char kar;clrscr();
printf("\nProgram pengulangan tak hingga ");
printf("\nCarilah karakter untuk menghentikan pengulangan ini ");
for(;;)
{
printf("\n\nKetikkan satu karakter : ");
kar=getche();
if(kar=='q')
{
printf("\nYes...!You are right");
break;
}
printf("\nHa..ha..,Anda salah mengetikkan karakter");
printf("\nPengulangan berjalan terus");
printf("\nCoba lagi, jangan putus asa");
}
getch();clrscr();
}


/* Contoh Program ke-19 */
/* Kombinasi For dan While */
main()
{
int j;
int k;
clrscr();
for (j=1;j<=5;j++)
{
k=1;
while(k<=j)
{
printf("%2d ",j*k);
k++;
}
printf("\n");
}
J=4;
while(j>=1)
{
for(k=1;k<=j;k++)
{
printf("%2d ",j*k);
}
printf("\n");
j--;
}
getch();
}

/* Contoh Program ke-20 */
main()
{
int jbrs=5;
char blank=' ';
char star='*';
int i,baris,lb,hitstar;
clrscr();
for(jbrs=1;jbrs<=5;jbrs++);
{
for(lb=jbrs-
for(lb=;(baris*2)-1<=2);
printf("%c",star);
printf("\n");
}
getch();
}


/* Contoh Program ke-21 */
/* Program konversi huruf besar ke kecil */
main(){
char besar,kecil;
clrscr();
printf("\xDB PROGRAM KONVERSI HURUF \xDB");
printf("\n\nInputkan sebuah huruf Capital (A-Z) ");
besar=getche();
kecil=besar+32;
printf("\n\nHuruf kecil dari %c adalah %c",besar,kecil);
getch();
}


/* Contoh Program ke-22 */
/* Program konversi Jam ke Menit */
main(){
int jam;
float jam_input,menit,tot_menit;
clrscr();
printf("\xB1\xB1 PROGRAM KONVERSI JAM \xB1\xB1");
printf("\n\nInputkan jam (x.xx) ");scanf("%f",&jam_input);
/*Konversi*/
jam=(int) jam_input;
menit=(jam_input-(int) jam_input)*60;
tot_menit=jam*60+menit;
printf("\n%f Jam = %d jam %5.2f menit = %.2f menit",
jam_input,jam,menit,tot_menit);
getch();
}


/* Contoh Program ke-23 */
/* Operasi Arithmatic pada data karakter */
#include
main()
{
int gaji_jam=15000;
float jam_kerja,gaji;
clrscr();
printf("Input jumlah jam kerja ?:");
scanf("%f",&jam_kerja);
if (jam_kerja > 7)
gaji=7*jam_kerja+(jam_kerja - 7)*1.5*gaji_jam;
/* Jika ada lembur */
else
gaji=jam_kerja*gaji_jam; /* Tidak ada lembur */
printf("\nGaji yang diterima :%10.2f",gaji);
getch();
}


/* Contoh Program ke-24 */
/* Struktur Else If */
main()
{
float angka;
char huruf;
clrscr();
printf("\nMasukan Nilai Angka : ");scanf("%f",&angka);
if(angka<50) huruf='E';
else if(angka>=50 && angka <60) huruf='D';
else if(angka>=60 && angka <70) huruf='C';
else if(angka>=70 && angka <85) huruf='B';
else huruf='A';
printf("\nAnda Mendapat Nilai :%c",huruf);
getch();
}



/* Contoh Program ke-25 */
/* Menghitung uang pembelian */
main()
{
float jml_belanja,discount=0,jml_bayar;
clrscr();
printf("\nBesarnya belanja : ");
scanf("%f",&jml_belanja);
if (jml_belanja >= 100000)
discount=0.10*jml_belanja;
jml_bayar=jml_belanja-discount;
printf("\nDiscount : %10.2f",discount);
printf("\nUang Pembayaran : %10.2f",jml_bayar);
getch();
}


/* Contoh Program ke-26 */
/* Penggunaan Nested If */
main()
{
int umur;
clrscr();
printf("\nBerapa usia Anda : ");
scanf("%d",&umur);
if (umur <50)
if (umur >21)
printf("\nAnda Sudah dewasa");
else
printf("\nAnda Masih Muda");
else
printf("\nAnda Sudah Tua");
getch();
}

>>>Selamat Berkarya, Success is waiting for you<<<
Created by:Chairul Candra,S.Kom. AMIK-DP

/* Contoh Program ke-27 */
#include
void fungsi1(void) {
/* Mendeklarasikan variabel x yang bersifat lokal */
int x;
x = 12;
printf("Nilai x di dalam fungsi1() : %d\n",x);
}
void fungsi2(void) {
/* Mendeklarasikan variabel x yang bersifat lokal */
int x;
/* Mendeklarasikan variabel y yang bersifat lokal */
int y=50;
x = 35;
printf("Nilai x di dalam fungsi2() : %d\n", x);
printf("Nilai y di dalam fungsi2() : %d\n", y);
}
/* Fungsi Utama */
int main() {
/* Melakukan pemanggilan terhadap fungsi1() dan fungsi2() */
fungsi1();
fungsi2();
getch();
}


/* Contoh Program ke-28 */
#include
/* Mendefinisikan makro untuk mengset nilai PI */
#define PI 3.1416
int main(void) {
/* Mendeklarasikan variabel untuk menampung
Nilai jari-jari dan luas lingkaran */
double jari2, luas;
/* Meminta pengguna (user) untuk memasukkan panjang jarijari */
clrscr();
printf("Masukkan panjang jari-jari lingkaran = ");
scanf("%lf", &jari2);
/* Melakukan perhitungan luas lingkaran dan
memasukkan hasilnya ke dalam Variabel luas */
luas = PI * jari2 *jari2;
/* Menampilkan nilai dari variabel luas */
printf("Luas lingkaran = %.2lf", luas);
getch();
}


/* Contoh Program ke-29 */
/* Penggunaan fungsi atoi() dan atof()
ASCII to integer dan ASCII to float */
main()
{
int bil;
char x[10];
clrscr();
printf("Inputkan sebuah bilangan bulat : ");
gets(x);
/*Konversi String ke Integer */
bil=atoi(x);
printf("\nBilangan tersebut : %d",bil);
printf("\nBilangan + 10 : %d",bil+10);
getch();
}



/* Contoh Program ke-30 */
/* Penggunaan fungsi atoi() dan atof()
ASCII to integer dan ASCII to float */
main()
{
float atof();
float bil;
char x[10];
clrscr();
printf("\nInput bilangan bulat : ");
gets(x);
/*Konversi String ke Float */
bil=atof(x);
printf("\nBilangan tersebut : %.3f",bil);
printf("\nBilangan + 10 : %.3f",bil+10);
getch();
}


/* Contoh Program ke-31 */
/* Penggunaan fungsi gets() dan puts() */
main()
{
static char nama[20];
clrscr();
puts("Nama Anda : ");gets(nama);
puts("Senang berkenalan dengan Anda, ");
puts(nama);
getch();
printf("\nLihat hasil yang kedua ini\n");
printf("Simpulkan sendiri...!\n\n");
cputs("Nama Anda : ");gets(nama);
cputs("Senang berkenalan dengan Anda, ");puts(nama);
getch();
}


/* Contoh Program ke-32 */
#define KEDIP "\x1B[5m"
#define NORMAL "\x1B]0m"
#define HAPUS printf("\x1B[2J")
main()
{
int brs,kol;
char nama[20];
HAPUS;
printf("\x1B[2;15f");
printf("Input Nama Anda : ");gets(nama);
printf("\x1B[3;15f");
printf("Ingin dicetak di posisi (brs,kol) : ");
scanf("%d,%d",&brs,&kol);
printf("\x1B[%d;%d",brs,kol);
printf("%s %s %s",KEDIP,nama,NORMAL);getch();
}
>>>Selamat Berkarya, Success is waiting for you<<<
AMIK-DP Kerinci
Writen by: Chairul Candra, S.Kom.

Senin, 14 Juni 2010

Pascal

Penggunaan Turbo Pascal

Dari modus prompt DOS, hal yang dilakukan sbb:
A:\>turbo
Dari desktop sorot dan double klik Turbo Pascal atau Pascal saja.

I. Menu dalam Pascal:
a.File (Alt-F)
Load / Pick :untuk mengambil program yang sudah ada di disk kerja
New :untuk membuat program baru
Save :untuk menyimpan program
Write to :untuk merekam program ke suatu file
Directory :untuk menampilkan directory
Cahnge dir :untuk mengganti directory yang aktif
OS Shell :untuk menjalankan perintah-perintah DOS
Quit :mengakhiri turbo Pascal dan kembali ke prompt DOS.


b.Edit (Alt-E)Digunakan untuk keperluan memperbaiki program.
c.Run (Alt-R)Digunakan untuk menjalankan program yang ada di jendela edit.
d.Compile (Alt-C)Digunakan untuk mengkompilasi program. Destination Memory (di simpan di memory). Destination Disk ( disimpan dalam disk dengan ext.EXE).
e.Options (Alt-O)Digunakan untuk mengatur/menentukan kembali bagaimana F1-help, F2-Save, F3-new, F4-import data, F9-expand, F10-contact danEsc-exit integrated environment bekerja.
f.Debug dan Break/Watch (Alt-D & Alt-B)Digunakan untuk melacak program, mengaktifkan Debug & Break/Watch.

**Catatan: tekan Esc untuk meninggalkan menu.

II. Struktur Program Pascal
Secara ringkas, struktur suatu program Pascal dapat terdiri dari:
1.Judul Program
2.Tubuh Program

Tubuh program dibagi menjadi dua bagian utama :
a.Bagian deklarasi
-deklarasi label
-deklarasi konstanta
-deklarasi tipe
-deklarasi variable/perubah
-deklarasi prosedur
-deklarasi fungsi

b.Bagian Pernyataan/Terproses.
Catatan: baris-baris komentar untuk memperjelas program diletakkan diantara tanda (* dan *) atau { dan }.

1.Judul Program
Judul program ini digunakan untuk memberi nama program dan sifatnya optional. Jika ditulis harus terletak pada awal dari program dan diakhiri dengan titik koma(;).
Contoh penulisan judul program:
PROGRAM latihan;
PROGRAM latihan(input, output);
PROGRAM lat_1;
PROGRAM lat_satu(output);

2.Bagian Pernyataan
Bagian ini adalah bagian yang akan terproses dan terdapat dalam suatu blok yang diawali dengan BEGIN dan diakhiri dengan END (penulisan END diikuti dengan tanda titik). Bagian ini berisi pernyataan/statemen yang merupakan instruksi program. Setiap statemen diakhiri dengan tanda titik koma (;).

Bentuk umumnya adalah sbb:

BEGIN
………..
statemen;
statemen;
………..
END.

3.Bagian deklarasi
Bagian ini menjelaskan secara rinci semua data yang akan digunakan pada suatu program. Dalam penulisannya tidak boleh sama dengan kata-kata cadangan (reserved words) dan selalu diakhiri dengan titik koma (;).

Deklarasi label
Deklarasi label digunakan jika pada penulisan program akan menggunakan statemen GOTO (untuk meloncat ke suatu statemen tertentu).
Contoh:
PROGRAM cetak;
LABEL satu,akhir;
BEGIN
WRITELN(‘AMIK’);
GOTO satu;
WRITELN(‘NOFEAR’);
Satu:
WRITELN(‘DEPATI PARBO’);
GOTO akhir;
WRITELN(‘MARA CANDRA’);
Akhir:
END.

Bila program diatas dijalankan, akan menghasilkan:
AMIK
DEPATI PARBO.

Deklarasi konstanta
Deklarasi ini digunakan untuk mengidentifikasikan data yang nilainya sudah ditentukan dan pasti, tidak dapat dirubah dalam program.
Contoh:
PROGRAM CETAK_2(OUTPUT);
CONST a = 64; (* selalu menggunakan tanda = *)
b = ’INDONESIA Merdeka’);
BEGIN
WRITELN(a,’TAHUN’);
WRITELN(b);
END.
Bila program dijalnkan, output sbb:
64 TAHUN
INDONESIA Merdeka.

Deklarasi tipe
Deklarasi ini digunakan untuk menyebutkan tipe setiap data yang akan digunakan pada program Pascal. Tipe data menentukan jangkauan nilai yang mungkin dari data yang digunakan.
Contoh:
PROGRAM SATU;
TYPE bulat = INTEGER; {selalu menggunakan tanda =}
Hasil,pecahan = REAL;
Ket = STRING[20];
BEGIN
Pecahan:=2.52;
Bulat:=2;
Hasil := pecahan + bulat;
Ket := ‘hasil penjumlahan =’;
WRITE(ket,hasil:4:2);
END.
Keluaran program, sbb: hasil penjumlahan = 4.52

Deklarasi variable/perubah
Deklarasi ini berisi data-data yang bias berubah-ubah nilainya di dalam program. Deklarasi variable harus diletakkan setelah deklarasi tipe (jika ada).
Contoh:
VAR satu : INTEGER;
Dua : INTEGER;
A : REAL;
B : REAL; {selalu menggunakan tanda : }
BEGIN
Satu := 5;
Dua := 4;
A := 2.3;
B := 5+4*2.3; {hasilnya real}
WRITE(‘hasil = ‘,b:4:1);
END.

Output program : hasil = 14.2
Program di atas bisa ditulis sbb:
VAR satu, dua : INTEGER;
BEGIN
……
Statemen;
…….
END.

Contoh jika terdapat deklarasi tipe:
TYPE
Bilangan = integer;
VAR
Satu, dua, a : bilangan;
B : real;
BEGIN
……..
Statemen;
……..
END.
Deklarasi prosedur dan Fungsi
Program dapat dibagi menjadi beberapa bagian/subprogram, yang terdiri dari satu program utama dan satu/lebih program bagian (bias berupa prosedur/fungsi). Deklarasi prosedur/fungsi terletak pada subprogram yang menggunakannya.

III. Tipe Data
Tipe data dapat terletak pada deklarasi variable maupun pada deklarasi tipe. Pascal menyediakan beberapa macam tipe data, yang terdiri dari:
1.Tipe data sederhana/scalar, terdiri dari :
1.1 Tipe data standar/predefinisi
1.1.1 bulat (integer)
1.1.2 real
1.1.3 karakter
1.1.4 string
1.1.5 logika (Boolean)
1.2 Tipe data didefinisikan pemakai:
1.2.1 subjangkauan (subrange)
1.2.2 terbilang (enumerated)
2.Tipe data terstruktur, terdiri dari :
2.1 larik (array)
2.2 rekaman (record)
2.3 berkas (file)
2.4 himpunan (set)
3.Tipe data penunjuk (pointer)

1.1 Tipe data standar
1.1.1 Tipe data integer
Tipe integer adalah bilangan yang tidak mempunyai titik decimal/bilangan pecahan. Integer terdiri dari beberapa tipe, yaitu :
-byte, dengan jangkauan nilai 0..255
-shortint, dengan jangkauan nilai -128..127
-integer, dengan jangkauan nilai -32768..32767
-word, dengan jangkauan nilai 0..65535
-longint, dengan jangkauan nilai -2147483648..2147483647

Operator yang dapat digunakan pada data tipe integer :
+,penjumlahan
-,pengurangan
*,perkalian
Div,pembagian
Mod,sisa pembagian

Contoh:
VAR a,b,jumlah1,jumlah2 : INTEGER;
BEGIN
Jumlah1 :=10;
Jumlah2 :=3;
A:= jumlah1 DIV jumlah2;
B:= jumlah1 MOD jumlah2;
WRITELN(‘HASIL A = ‘,A);
WRITELN(‘HASIL B = ‘,B);
END.
Hasil program : HASIL A = 3
HASIL B = 1

1.1.2 Tipe data real
Tipe real adalah bilangan yang mengandung pecahan, paling sedikit harus ada satu digit sebelum dan sesudah titik decimal.
Operator yang dapat digunakan pada data tipe real adalah:
+,penjumlahan
-,pengurangan
*,perkalian
/,pembagian

Contoh:
VAR nilai1,nilai2,hasil : REAL;
BEGIN
Nilai1 := 2.52;
Nilai2 := 3.2;
Hasil := nilai1 + nilai2;
Write(‘HASIL PENJUMLAHAN = ‘,hasil:4:2);
END.
Output program, sbb : HASIL PENJUMLAHAN = 5.72

1.1.3Tipe data karakter
Nilai data karakter berupa sebuah karakter yang ditulis diantara tanda petik tunggal, misalnya : ‘A’, ‘b’, ‘@’, dan sebagainya. Karakter yang dapat diterima oleh computer:
Huruf besar/kecil : AB,C,..,Z / a,b,c,…,z
Digit : 1,2,3,…,9
Operator aritmatika : * / + -
Tanda baca : , . ; : ? !
Symbol khusus : $ @ {} () [] % #
Spasi
Contoh:
VAR nilai : CHAR;
BEGIN
Nilai := ‘A’;
WRITELN(‘NILAI TERBAIK =’,nilai); END.
Hasilnya : NILAI TERBAIK = A

1.1.4Tipe data string
Nilai data string adalah satu atau lebih karakter yang terletak diantara tanda petik tunggal, missal : ‘DEPATI PARBO’. Bila panjang dari suatu string di dalam deklarasi variable tidak disebutkan, maka dianggap panjangnya 255 karakter.
Contoh:
VAR kata1 : STRING[5];
Kata2 : STRING[9];
Kata : CHAR;
BEGIN
Kata1 :=’AMIK’;
Kata2 :=’DEPATI PARBO’;
Kata :=’ ‘; {karakter berupa spasi}
WRITELN(kata1,kata,kata2);
END.
Hasilnya : AMIK DEPATI PARBO

1.1.5Tipe data boolean
Data tipe Boolean mempunyai dua nilai, yaitu True dan False.
Contoh:
VAR
Benar : BOOLEAN;
BEGIN
Benar := TRUE;
Writeln (‘benar = ‘,benar);
END.
Hasil program bila dijalankan : benar = TRUE

1.2Tipe data terdefinisi
1.2.1Tipe data subjangkauan
Tipe data ini adalah tipe data yang dapat didefinisikan sendiri oleh pemakai. Nilai data pada tipe ini mempunyai jangkauan tertentu.
Misalkan nilai ujian mempunyai harga 0 sampai 100, maka nilai ujian dapat didefinisikan sbb:
TYPE
Nilai = 0..100;
Contoh:
VAR sks : 1..4;
Angkatan : 07..09;
Nilai : ‘A’..’E’;
1.2.2Tipe data terbilang
Tipe data ini juga dapat didefinisikan sendiri oleh pemakai. Disebut tipe terbilang karena semua nilai disebut satu persatu.
Contoh:
TYPE hari = (Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu);
Hari_kerja = (Senin,Selasa,Rabu,Kamis,Jumat);
Situasi = (Senang,gembira,sedih,susah);
2.1. Tipe data larik (array)
Larik (array) adalah kumpulan data yang mempunyai tipe data sejenis. Daftar nomor telpon, daftar kode mata kuliah, vector, matrik merupakan contoh larik.
Contoh penulisan tipe larik berdimensi satu sbb:
CONST batas = 20;
VAR telpon : ARRAY[1..3] OF STRING[7];
{ larik dengan nama telpon mempunyai 3 data dengan tipe string}
Nilai : ARRAY[1..5] OF INTEGER;
{ larik dengan nama nilai mempunyai 5 data dengan tipe integer }
Gaji : ARRAY[1..batas] OF REAL;
{ larik dengan nama gaji mempunyai 20 data dengan tipe real}

Contoh larik yang mempunyai tipe data terbilang atau subjangkauan :
TYPE batas = 0..100;
Keadaan = (baru,lama,bagus,jelek);
VAR
Nilai : ARRAY[1..30] OF ‘A’..’B’;
{ larik dengan nama nilai mempunyai 30 data, dan pengisian data yang diperbolehkan hanya A,B,C,D,E }
Angka : ARRAY[1..50] OF batas;
{ larik dengan nama angka mempunyai 50 data, dan pengisian data yang diperbolehkan hanya 1,2,3,…,99,100 }
Baju : ARRAY[1..10] OF keadaan;
{ larik dengan nama baju mempunyai 10 data, dan pengisian data yang diperbolehkan baru,lama,bagus, dan jelek }

Contoh program :
VAR jumlah : INTEGER;
Nilai : ARRAY[1..3] OF ‘A’..’E’;
Angka : ARRAY[1..3] OF INTEGER;
BEGIN
Nilai[1] := ‘C’;
Nilai[2] := ‘B’;
Nilai[3] := ‘A’;
angka[1] := 75;
angka[2] := 60;
angka[3] := 90;
jumlah := angka[1]+angka[2]+angka[3];
WRITELN(‘Nilai = ‘,angka[2],’Mendapat’,nilai[1]);
WRITELN(‘Jumlah = ‘,jumlah);
END.
Hasil program : Nilai 60 Mendapat C
Jumlah = 225

Contoh penulisan tipe larik berdimensi dua sbb:
VAR table : ARRAY[1..3,1..2] OF BYTE;
{ larik table mempunyai 3 baris dan 2 kolom dengan tipe byte }
BEGIN table[1,1]:=5; { baris 1, kolom 1 }
Table[1,2] :=7;
Table[2,1]:=21; { baris 2, kolom 1}
Table[2,2]:=18;
Table[3,1]:=8;
Table[3,2]:=7;
Writeln(‘Baris 1 Kolom 2 =’,table[1,2]);
END.

Hasil program bila dijalankan: Baris 1 Kolom 2 = 7

2.2 Tipe data record dan file
(akan dibahas pada pembahasan record dan file)

Statemen-statemen Pada Pascal
Reserverd Word
Reserved Word adalah kata-kata baku yang digunakan dalam program dan mempunyai bentuk serta kegunaan tertentu yang telah didefinisikan oleh Pascal.
Reserved Word tidak boleh didefinisikan kembali oleh pemakai, sehingga tidak dapat digunakan sebagai pengenal (Identifier). Dalam bahasa pemrograman Pascal, beberapa Reserved Word tersebut adalah:
AND ASM ARRAY BEGIN CASE CONST CONSTRUCTOR DESTRUCTOR DIV DO WITH DOWNTO
ELSE END EXPORTS FILE FOR IF IMPLEMENTATION VAR IN INHERITED INLINE INTERFACE LABEL LIBRARY FUNCTION GOTO NOT OBJECT USES OF OR PACKED
PROCEDURE PROGRAM RECORD MOD NIL SHL SHR STRING THEN TO TYPE UNIT
UNTIL REPEAT SET WHILE


Selain dari Reserved Word di atas, Turbo Pascal masih memiliki tambahan Reserved Word berikut:
ABSOLUTE ASSEMBLER() FAR FORWORD INDEX

Beberapa statemen/perintah pada Pascal
Statemen adalah perintah untuk pengerjaan Pascal. Statemen terletak di bagian dekalarasi ststemen dengan diawali oleh kata cadangan BEGIN dan diakhiri dengan kata cadangan END. Akhir dari setiap statemen diakhiri dengan titik koma(;). Statemen-statemen dalam bahasa Pascal terdiri dari pernyataan yang berupa fungsi dan prosedur yang telah disediakan sebagai perintah standar Turbo Pascal.
1.Statemen-statemen yang digunakan untuk input/output
2.Statemen-statemen yang digunakan untuk pengaturan letak di layer
3.Statemen-statemen yang digunakan untuk memanipulasi string

Array

Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen type,larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen dalam larik ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses dengan menunjukkan nilai indexnya atau subskript. Array dapat bertipe data sederhana seperti byte, word, integer, real, bolean, char, string dan tipe data scalar atau subrange. Tipe larik mengartikan isi dari larik atau komponen- komponenya mempunyai nilai dengan tipe data tersebut.

Contoh:
Var
Untai : array[1..50] of Integer;

Pada contoh Array dengan nama untai telah dideklarasikan dengan tipe integer, dengan jumlah elemen maksimum 50 elemen, nilai dari elemen array tersebut diatas harus bertipe integer.

Contoh Program :
Program Contoh_Array_Input;
Uses Crt;
Var
Bilangan : array[1..50] of Integer;
Begin
ClrScr;
Bilangan[1]:=3;
Bilangan[2]:=29;
Bilangan[3]:=30;
Bilangan[4]:=31;
Bilangan[5]:=23;
Writeln('nilai varibel bilangan ke 3 =',Bilangan[3]);
Readln;
End.

Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti contoh dibawah ini :

Program Contoh_Deklarasi_Array_Beragam;
Uses Crt;
Var
NPM : array[1..20] of string[10];
Nama : array[1..20] of string[25];
Nilai : array[1..20] of real;
Umur : array[1..20] of byte;
banyak,i : integer;
Begin
ClrScr;
Write('Isi berapa data array yang diperlukan :');Readln(banyak);
For i := 1 to banyak Do
Begin
Write('NPM =');Readln(NPM[i]);
Write('Nama =');readln(Nama[i]);
Write('Nilai=');readln(Nilai[i]);
Write('Umur =');readln(Umur[i]);
End;
{cetak varibel array}
Writeln('NPM NAMA NILAI UMUR ');
For i:= 1 to banyak Do
Begin
Writeln(Npm[i]:10,Nama[i]:25,Nilai[i]:3:2,' ',Umur[i]:3);
End;
Readln;
End.

Untuk deklarasi array dapat digunakan beberapa cara seperti berikut ini :

Type
Angka = String[20];

Var
Nama : Array [1..50] of Angka;
Begin
.
.
End.

Deklarasi tipe indeks subrange integer Indeks pada array dapat tipe skalar atau subrange, tetapi tidak bisa real.

Contoh:
Var
Nilai : Array[1..10] of Integer;

Pada contoh ini array nilai mempunyai 10 buah elemen yaitu dari 1 sampai 10. Array tersebut dapat dideklarasikan dengan type seperti berikut ini :
Type
Skala = 1..10;
Var
Nilai : Array [skala] of Integer;

atau :

Type
Skala = 1..10;
Y = Array[skala] of Integer;
Var
Nilai : Y;

atau :

Type
Y = Array[1..10] of Integer;
Var
Nilai : Y;

atau :

Const
Atas =1;
Bawah = 5;
type
Y = Array[Atas..Bawah] of Integer;
Var
Nilai : Y;


I. Deklarasi Type Indeks Skalar

Indeks dari larik dapat berupa tipe skalar.

Contoh. :
Program Deklarasi_Indeks_Array_Skalar;
Uses Crt;
Var
Jum : Array[(jan,feb,mar,apr,mei)] of Integer;
Begin
Jum[jan]:=25;
Jum[feb]:=45;
Jum[mar]:=21;
Jum[apr]:=23;
Jum[mei]:=50;
Writeln('Jumlah nilai bulan maret =',Jum[mar]);
Readln;
End.

dapat juga ditulis :

type
Bln = (jan,feb,mar,apr,mei);
Var
Jum : Array[bln] of Integer;

atau :

type
Bln =(jan,feb,mar,apr,mei);
Var
Jum : Array[jan..mei] of Integer;



II. Deklarasi Konstanta Array

Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di bagian deklarasi variabel, tetapi dapat juga berupa konstanta (const).

Contoh Program :
Program Contoh_Deklarasi_Array_Konstan;
Uses Crt;
Const
Tetap : Array[1..4] of Integer=(7,10,21,20);
Var
i : Integer;
Begin
For i:= 1 to 4 Do
Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]);
Readln;
End.

Konstanta array dapat juga berupa ketetapan dalam bentuk karakter seperti berikut.

Contoh Program :
Program Contoh_Konstan_Array_Char_;
Uses Crt;
Const
Huruf : Array[0..5] of Char=('A','B','C','D','E','F');
Var
i : Integer;
Begin
For i:= 0 to 5 Do
Writeln('Nilai konstan array ke',i:2,' = ',Huruf[i]);
Readln;
End.

Konstanta array dapat juga berupa string seperti berikut ini.

Contoh Program :
Program Constanta_Array_String;
Uses Crt;
Type
A = Array [1..5] of String;
Const
Nama : A = ('basic','pascal','cobol','paradox','dbase');
Var
i : Integer;
Begin
For i:= 1 to 5 Do
Writeln('Nilai Array ke-',i:2,'= ',Nama[i]);
readln;
end.
Dalam pascal string merupakan array dari elemen- elemen karakter seperti berikut :

Contoh Program :
Program String_Adalah_Array_Tipe_Char;
Uses Crt;
Var
Nama : string;
i : Integer;
Begin
Nama:='Turbo Pascal';
For i:= 1 to Length(nama) Do
Writeln('Elemen ',i,' dari ',Nama,'= ',Nama[i]);
Readln;
End.

Contoh program bilangan prima dengan menggunakan bantuan array.

Contoh program :
Program Mencari_Bilangan_Prima_Dengan_Array;
Uses Crt;
Var
Prima : Array[1..100] of Integer;
i,j : Integer;
bil : Integer;
Begin
ClrScr;
For i := 2 to 100 Do
Begin
Prima[i]:=i;
For j:= 2 to i-1 Do
Begin
bil := (i mod j); {* i dibagi j dicek apakah 0*}
If bil = 0 then Prima[i]:=0; {*jika habis dibagi,berarti bkn prima*}
End;
If Prima[i]<> 0 Then Write(Prima[i],' '); {*cetak array yg prima*}
End;
Readln;
End.

Contoh pengurutan data dengan metode buble sort, yaitu dengan cara penukaran, dapat
dilihat pada contoh dibawah ini :

Contoh Program :
Program Penggunaan_Array_Untuk_Sortir_Buble_Sort;
Uses Crt;
Var
nil1 : Array[1..100] of Integer;
n,i,j,dum : Integer;
Begin
ClrScr;
Write('mau isi berapa data acak (integer) ='); readln(n);
For i := 1 to n Do
Begin
Write('Data Ke ',i,':');Readln(nil1[i]);
End;
{ penyapuan proses}
for i:= 1 to n-1 do
begin
for j:= i to n do
begin
if nil1[j]III. Array Dua Dimensi

Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array dimensi banyak (Multidimensional array), disini akan dibahas array 2 dimensi saja. Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik.
Untuk mengetahui cara mendeklarasikan dari penggunaan aray dua dimensi dapat dilihat pada listing program dibawah ini .

Contoh Program:
Program Deklarasi_Array_Dua_Dimensi;
Uses Crt;
Var
Tabel : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
Tabel[1,1]:=1;
Tabel[1,2]:=2;
Tabel[2,1]:=3;
Tabel[2,2]:=4;
Tabel[3,1]:=5;
Tabel[3,2]:=6;
For I := 1 to 3 Do
Begin
For J:= 1 to 2 Do
Begin
Writeln('Elemen ',i,',',j,'= ',tabel[i,j]);
End;
End;
Readln;
End.


IV. Alternatif Deklarasi Array Dua Dimensi.

Ada beberapa cara dalam mendeklarasikan array dua dimensi, beberapa cara tersebut dapat dilihat dibawah ini :

Contoh :
Var
Tabel : Array[1..3] of Array[1..2] of Byte;

atau :

Type
Matrik = Array[1..3,1..2] of Byte;
Var
Tabel : Matrik;

atau :

Type
Baris = 1..3;
Kolom = 1..2;
Matrik = Array[Baris,Kolom] of Byte;
Var
Tabel : Matrik;

atau :

Type
Baris = 1..3;
Kolom=1..2;
Matrik= Array[Baris] of Array[Kolom] of Byte;
Var
Tabel : Matrik;

Dibawah ini akan diberikan listing program penggunaan array dua dimensi dalam aplikasi penjumlahan matrik :
Contoh Prorgam:

Program Penjumlahan_Matrik;
Uses Crt;
Var
Matrik1,Matrik2, Hasil : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
{ input matrik ke satu }
Writeln(' Elemen matrik satu');
For i := 1 to 3 Do
Begin
For j := 1 to 2 Do
Begin
Write('Elemen baris -',i,' Kolom -',j,'= ');
Readln(matrik1[i,j]);
End;
End;
{input matrik ke dua}
Writeln('input elemen matrik dua');
For i:= 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Write('Elemen baris -',i,' kolom -',j,'= ');
Readln(matrik2[i,j]);
End;
End;
{proses penjumlahan tiap elemen}
For i := 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j];
End;
End;
{proses cetak hasil}
For i:= 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Write(Hasil[i,j]:6);
End;
Writeln;
End;
Readln;
End.


V. Array Sebagai Parameter

Array dapat digunakan sebagai parameter yang dikirimkan baik secara nilai (by value) atau secara acuan (by reference) ke procedure atau ke function. Procedure yang menggunakan parameter berupa array harus dideklarasikan di dalam judul procedure yang menyebutkan parameternya bertipe array.

Contoh Program :
Program Contoh_Pengiriman_Parameter_Array_Di_Procedure;
Uses Crt;
Const
Garis ='---------------------------------------------------';
Type
Untai = Array[1..10] of String[15];
Bulat = Array[1..10] of Integer;
Huruf = Array[1..10] of Char;
Var
i,Banyak : Integer;

Procedure Proses(Nama:Untai;Nilai:Bulat);
Var
Ket : String;
Abjad : Char;
Begin
Writeln(Garis);
Writeln('Nama Nilai Abjad Keterangan');
Writeln(Garis);
For i := 1 to Banyak Do
Begin
If Nilai[i] > 90 Then
Begin
Abjad:='A';
Ket :='Istimewa';
End;
If (Nilai[i]<90)>70) Then
Begin
Abjad:='B';
Ket :='Memuaskan';
End;
If (Nilai[i]<70)>60) Then
Begin
Abjad:='C';
Ket :='Cukup';
End;
If (Nilai[i]<60)>45) Then
Begin
Abjad:='D';
Ket :='Kurang';
End;
If Nilai[i]< data ="');Readln(Banyak);" nama ="');readln(Nama[i]);" nilai ="');readln(Nilai[i]);" style="font-weight: bold;">Record
Tipe record merupakan tipe data terstruktur. Dalam penggunaan tipe data record dapat dikumpulkan beberapa item data yang masing-masing mempunyai tipe data berbeda-beda. Record dapat berisi beberapa field untuk sebuah subjek tertentu.
I. Deklarasi record
Diawali dengan kata cadangan Record, lalu diikuti daftar field dan diakhiri kata cadangan end;
Contoh:
Type
Data_pegawai = record
Nip : string[5];
Nama : string[15];
Alamat : string[20];
Gaji : longint;
End;
Var
Pegawai : data_pegawai;
Atau langsung dideklarasikan di variable :
Var
Pegawai : record
Nip : string[5];
Nama : string[15];
Alamat : string[20];
Gaji : longint;
End;
Cara menggunakan tiap field dari record untuk input, cetak dan proses adalah sebagai berikut:
Nama_record.nama_field
Contoh:
Program contoh_record_sederhana;
Uses crt;
Type
Data_pegawai = record
Nip : string[5];
Nama : string[15];
Alamat : string[20];
Gaji : longint;
End;
Var
Pegawai : data_pegawai;
Begin
Clrscr;
Write(‘Kode pegawai = ‘);readln(pegawai.nip);
Write(‘Nama pegawai = ‘);readln(pegawai.nama);
Write(‘Alamat pegawai = ‘);readln(pegawai.alamat);
Write(‘Gaji pegawai = ‘);readln(pegawai.gaji);
{cetak di layar}
Writeln(‘Kode pegawai : ‘,pegawai.nip);
Writeln(‘Nama pegawai : ‘,pegawai.nama);
Writeln(‘Alamat pegawai : ‘,pegawai.alamat);
Writeln(‘Gaji pegawai : ‘,pegawai.gaji);
Readln;
End.



II.Statemen with
Penggunaan statemen nama_record.nama_field seperti contoh sebelumnya dapat diringkas menjadi :
Contoh:
Program contoh_record_menggunakan_statemen_with;
Uses crt;
Type
Data_pegawai = record
Nip : string[5];
Nama : string[15];
Alamat : string[20];
Gaji : longint;
End;
Var
Pegawai : data_pegawai;
Begin
Clrscr;
With pegawai do
Write(‘Kode pegawai = ‘);readln(pegawai.nip);
Write(‘Nama pegawai = ‘);readln(pegawai.nama);
Write(‘Alamat pegawai = ‘);readln(pegawai.alamat);
Write(‘Gaji pegawai = ‘);readln(pegawai.gaji);
{cetak di layar}
Writeln(‘Kode pegawai : ‘,nip);
Writeln(‘Nama pegawai : ‘,nama);
Writeln(‘Alamat pegawai : ‘,alamat);
Writeln(‘Gaji pegawai : ‘,gaji);
Readln;
End.

Penjelasan:
Dengan menggunakan statemen with maka blok statemen berikutnya setelah statemen with dapat menggunakan nama field tanpa menyebutkan nama recordnya lagi.

III.Record dalam array
Dalam contoh sebelumnya penggunaan tipe data record hanya dapat menyimpan satu record. Untuk dapat menyimpan sejumlah record maka dapat digunakan array yang bertipe record yang sudah didefinisikan. Untuk itu dapat dilihat listing program berikut.
Contoh:
Program contoh_record_dalam_array;
Uses crt;
Type
Data_pegawai = record
Nip : string[5];
Nama : string[15];
Alamat : string[20];
Gaji : longint;
End;
Var
Pegawai : array[1..10] of data_pegawai;
I : integer;
Begin
Clrscr;
For i:= 1 to 10 do
Begin
With pegawai[i] do
Begin
Writeln(‘Record ke_ ‘,i);
Write(‘Kode pegawai = ‘);readln(nip);
Write(‘Nama pegawai = ‘);readln(nama);
Write(‘Alamat pegawai = ‘);readln(alamat);
Write(‘Gaji pegawai = ‘);readln(gaji);
Writeln;
End;
End;
{cetak}
Writeln(‘ NIP Nama Alamat Gaji’);
For i:= 1 to 10 do
Begin
With pegawai[i] do
Begin
Write(nip:5);
Writenama:15);
Write(alamat:20);
Writeln(gaji:10);
End;
End;
Writeln(‘-------------------------------------‘);
Readln;
End.


IV.Field record bertipe array
Jika dalam satu record terdapat beberapa field yang sama tipenya dapat digunakan array. Contoh ada data barang yang mempunyai struktur.
- Nama barang  bertipe string
- Jumlah unit barang ke 1  bertipe byte
- Jumlah unit barang ke 2  bertipe byte
- Jumlah unit barang ke 2  bertipe byte
Terlihat bahwa jumlah unit barang 1,2,3 bertipe sama. Dalam hal ini dapat digunakan array ber index 1..3 untuk mempersingkat field jumlah unit barang.
Contoh:
Program penggunaan_field_record_tipe_array;
Uses crt;
Type
Data_brg = record
namaBrg : string[15];
unitBrg : array[1..3 of byte;
end;
var
Barang : array[1..10] of data_brg;
i,j,banyak,jum1,jum2,jum3 : integer;
Begin
Jum1:=0;jum2:=0;jum3:=0;
Write(‘Banyak record Max. 10 = ‘);readln(banyak);
For I := 1 to banyak do
Begin
With barang[i] do
Begin
Writeln(‘Record ke-‘,i);
Write(‘Nama barang =’);readln(namabrg);
For j:= 1 to 3 do
Begin
Write(‘Unit barang ke-‘,j,’=’);readln(unitbrg[j];
End;
End;
End;
Clrscr;
Writeln(‘--------------------------------------‘);
Writeln(‘Nama barang unit1 unit2 unit3’);
Writeln(‘--------------------------------------‘);
{cetak data }
For i:= 1 to banyak do
Begin
With barang[i] do
Begin
Jum1:=jum1+unitbrg[1];
Jum2:=jum2+unitbrg[2];
Jum3:=jum2+unitbrg[2];
Writeln(namabrg:15,unitbrg[1]:5,unit[2]:5,unitbrg[3]:5);
End;
End;
Writeln(‘-----------------------------------------‘);
Writeln(‘Jumlah unit 1 =’,jum1:6);
Writeln(‘Jumlah unit 2 =’,jum2:6);
Writeln(‘Jumlah unit 3 =’,jum3:6);
Readln;
End.

V.Tipe data record dengan field tipe record
Dalam Turbo Pascal tipe data record didefinisikan juga sebagai field dari suatu record. Artinya suatu record dapat juga mempunyai field yang merupakan record. Contoh: sebuah data pegawai mempunyai struktur sebagai berikut:
-nama pegawai  string
-mulai masuk  -Tgl
-Bln
-Thn
-alamat pegawai  -Jalan
-Kota
-Gaji  -Gaji pokok
-Lembur
-Tunjangan
Maka dapat disusun program sebagai berikut :
Contoh:
Program penggunaan_field_tipe_record;
Uses crt;
Type
Masuk = record
Tgl :1..31;
Bln : 1..12;
Thn : integer;
End;
Alamat = record
Jalan=string[20];
Kota[10];
End;
Gajipeg=record
Pokok,tunjangan,lembur :real;
End;
Datapegawai = record
Nama:string[20];
Tglmasuk : masuk;
Almt:alamat;
Gaji:gajipeg;
End;
Var
Pegawai : array[1..10] of datapegawai;
I,p,banyak:integer;
Begin
Clrscr;
Write(‘Banyaka data record =’);readln(banyak);
For i:=1 to banyak do
Begin
Writeln(‘Record ke-‘,i);
With pegawai[i] do
Begin
Write(‘Nama Pegawai :’);readln(nama);
Write(‘Tanggal Masuk :’);readln(tglmasuk.tgl);
Write(‘Bulan Masuk :’);readln(tglmasuk.bln);
Write(‘Tahun Masuk :’);readln(tglmasuk.thn);
Write(‘Alamat :’);readln(alamat.jalan);
Write(‘Kota :’);readln(almt.kota);
Write(‘Gaji pokok :’);readln(gaji.pokok);
Write(‘Tunjangan :’);readln(gaji.tunjangan);
Write(‘Lembur :’);readln(gaji.lembur);
End;
End;
{cetak data}
For i:=1 to banyak do
Begin
Writeln(‘Record ke-‘,i);
With pegawai[i] do
Begin
Write(‘Nama Pegawai :’,nama);
Write(‘Tanggal Masuk :’,tglmasuk.tgl;
Write(‘Bulan Masuk :’,tglmasuk.bln);
Write(‘Tahun Masuk :’,tglmasuk.thn);
Write(‘Alamat :’,alamat.jalan);
Write(‘Kota :’,almt.kota);
Write(‘Gaji pokok :’,gaji.pokok);
Write(‘Tunjangan :’,gaji.tunjangan);
Write(‘Lembur :’,gaji.lembur);
End;
End;
Readln;
End.

VI.Record bervariasi
Record yang telah dibahas sebelumnya merupakan struktur record yang pasti, artinya field-field di dalam record sudah tertentu dan pasti. Selain itu di program Pascal dapat juga dibuat suatu record yang mempunyai field yang tidak pasti atau dapat berubah, yang disebut sebagai record yang bervariasi. Dalam record yang bervariasi dapat mengandung suatu field yang tergantung dari suatu kondisi. Dalam penerapannya dalam program hanya dapat diterima suatu buah field yang bervariasi saja. Field bervariasi ini harus terletak di bawah field yang tetap.
Contoh: Ada sebuah struktur data pegawai yang terdiri dari:
-Nama pegawai
-Alamat pegawai
-Umur
-Gaji
untuk gaji dibedakan antara pegawai tetap dengan honorer.
Untuk tetap -Tunjangan
-Lembur
-Gaji pokok
Untuk honorer -Gaji pokok

Deklarasi dan program :
Type
Status_pegawai = (Honorer, Tetap);
Data_pegawai = record
Nama :string[15];
Alamat:string[20];
Umur:byte;
Case status: status_pegawai of Honorer (gaji_h :real);
Tetap (gaji_t :real;
Tunajangan:real;
Lembur :real);
End;
Var
Pegawai : array[1..10] of data_pegawai;
Banyak,I : integer;
Kode : char;
Begin
{ input data }
Write(‘banyak Data maax.10 :’);readln(banyak);
For i:= 1 to banyak do
Begin
with pegawai[i] do
Begin
Write(‘Nama pegawai =’);readln(nama);
Write(‘Alamat pegawai =’);readln(alamt);
Write(‘Umur pegawai =’);readln(umur);
Write(‘Pegawai tetap(T) atau Honorer(H) :’);readln(kode);
Kode := upcase(kode);
Case kode of
‘H’:begin
Status:=Honorer;
Write(‘Gaji didapat =’);readln(gaji_h);
End;
‘T’:begin
Status:=Tetap;
Write(‘Gaji tetap =’);readln(gaji_t);
Write(‘Tunjangan =’);readln(tunjangan);
Write(‘Lembur =’);readln(lembur);
End;
End;
End;
End;
{ cetak data }
Writeln(‘-----------------------------------------------------------------------------‘);
Writeln(‘Nama Alamat Umur Status Gaji Tunjangan Lembur’);
Writeln(‘-----------------------------------------------------------------------------‘);
For i:= 1 to banyak do
Begin
With pegawai[i] do
Begin
Write(nama:15);
Write(alamat:20);
Write(umur:3,’’);
Case status of
Honorer:
writeln(‘Honorer’,gaji_h:8:2);
Tetap :
writeln(‘Tetap ‘,gaji_t:8:2,tunjangan:8:2,lembur:8:2);
End;
End;
End;
Writeln(‘-----------------------------------------------------------------------------‘);
Readln;
End.

Program contoh_record_bervariasi;
Uses crt;
Type
Status_karyawan = (lajang,menikah,cerai);
Data_karyawan = record
Nama : string[15];
Alamat : string[20];
Gaji : integer;
Case status : status_karyawan of Lajang:();
Menikah:(anakm:0..20);
Cerai:(anakc:0..20; lagi: char);
End;
Var
Karyawan: array[1..10] of data_karyawan;
I,banyak : integer;
Sts : char;
Begin
Clrscr;
Write(‘Jumlah data record :’);readln(banyak);
For i:= 1 to banyak do
Begin
With karyawan[i] do
Begin
Write(‘Nama :’);readln(nama);
Write(‘Alamat :’);readln(alamat);
Write(‘Gaji :’);readln(gaji);
Write(‘Status M=menikah L=Lajang C=cerai’);readln(sts);
If upcase(sts)=’L’ then
Begin
Status :=lajang;
End;
If upcase(sts)=’M’ then
Begin
Status:=Menikah;
Write(‘Jumlah anak= ‘);readln(anakm);
End;
If upcase(sts)=’C’ then
Begin
Status:=cerai;
Write(‘Jumlah anak= ‘);readln(anakc);
End;
Write(‘Kawin lagi (Y/T)?’);readln(lagi);
End;
End;
End;
{ tampilkan }
For i:= 1 to banyak do
Begin
With karyawan[i] do
Begin
Write(nama);
Write(alamat);
Write(gaji);
Case status of
Lajang:
writeln(‘lajang’);
Menikah :
Begin
Writeln(‘menikah’,’ ’,anakm:4);
End;
Cerai :
Begin
Write(‘cerai’,’ ‘,anakc:4,’’,lagi);
End;
End;
End;
Readln;
End.

Program penggunaan_field_tipe_record;
Uses crt;
Type
Masuk = record
Tgl :1..31;
Bln :1..12;
Thn: integer;
End;
Alamat = record
Jalan : string[20];
Kota : string[10];
End;
Gajipeg = record
Pokok,tunjangan,lembur : real;
End;
Datapegawai = record
Nama : string[20];
Tglmasuk :masuk;
Almt : alamat;
Gaji : gajipeg;
End;
Var
Pegawai : array[1..10] of datapegawai;
I,p,banyak : integer;
Begin
Clrscr;
Write(‘Banyak data record =’);readln(banyak);
For i:= 1 to banyak do
Begin
Writeln(‘record ke-‘,i);
With pegawai[i] do
Begin
Write(‘Nama pegawai :’);readln(nama);
Write(‘Tanggal Masuk :’);readln(tglmasuk.tgl);
Write(‘Bulan Masuk :’);readln(blnmasuk.bln);
Write(‘Tahun Masuk :’);readln(thnmasuk.thn);
Write(‘Alamat :’);readln(almt.jalan);
Write(‘Kota :’);readln(almt.kota);
Write(‘Gaji pokok :’);readln(gaji.pokok);
Write(‘Tunjangan :’);readln(gaji.tunjangan);
Write(‘Lembur :’);readln(gaji.lembur);
End;
End;
{ cetak data }
For i:= 1 to banyak do
Begin
Writeln(‘record ke-‘,i);
With pegawai[i] do
Begin
Write(‘Nama :’,nama;
Write(‘Tanggal Masuk :’,tglmasuk.tgl;
Write(‘Bulan Masuk :’,blnmasuk.bln;
Write(‘Tahun Masuk :’,thnmasuk.thn;
Write(‘Alamat :’,almt.jalan;
Write(‘Kota :’,almt.kota;
Write(‘Gaji pokok :’,gaji.pokok;
Write(‘Tunjangan :’,gaji.tunjangan;
Write(‘Lembur :’,gaji.lembur;
End;
End;
Readln;
End.


Procedure
Procedure adalah suatu program yang terpisah dalam blok tersendiri yang berfungsi sebagai subprogram (program bagian). Penggunaan prosedur diawali dengan kata cadangan procedure di dalam bagian deklarasi procedure. Pemanggilan procedure dengan menggunakan judul procedure.
Pada program terstruktur banyak menggunakan procedure karena :
- sebagai penerapan program yang modular yaitu memecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk procedure.
- Untuk beberapa perintah yang sering digunakan berulang, cukup dituliskan sekali dalam procedure dan dapat dipanggil sewaktu-waktu.

Contoh Procedure tanpa parameter,
Procedure garis;
Begin
Writeln(‘--------------------‘);
End;
Procedure judul;
Begin
Writeln (‘Pascal’);
End;
{ modul utama }
Begin
Garis;
Judul;
Garis;
End.
Hasil :
--------------------
Pascal
--------------------

I.Parameter dalam procedure
Nilai di dalam suatu prosedur sifatnya adalah lokal, berarti hanya dapat digunakan oleh procedure tersebut saja dan tidak dapat digunakan oleh procedure yang lain.
Contoh:
Procedure hitung;
Var
a,b,c : integer;
Begin
Write(‘Nilai a =’);readln(a);
Write(‘Nilai b =’);readln(b);
C:=a+b;
Writeln(‘Hasil penjumlahan =’,c:5);
Readln;
End;
{ modul utama } akan salah jika pada modul utama :
Begin Begin
Hitung; hitung;
End. Writeln(‘Nilai a=’,a); -> a tidak dikenal
End.
Pada kasus di atas dapat diselesaikan dengan menggunakan deklarasi secara global, sehingga semua prosedur di bawah deklarasi global dapat menggunakannya.
Contoh penggunaan deklarasi global:
Uses crt;
Procedure kali;
Var
a,b,c : integer; {deklarasi secara local untuk procedur kali saja }
Begin
Write(‘A =’);readln(a);
Write(‘B =’);readln(b);
c:=a*b;
Writeln(‘Hasil C =’,c:5);
End;
Var
d,e,f : integer; {deklarasi secara global hingga dikenal oleh}
Procedure tambah; { procedure tambah dan procedure di bawahnya }
Begin
Write(‘nilai d =’);readln(d);
Write(‘nilai e =’);readln(e);
f:=d+e;
Writeln(‘nilai f =’,f:5);
End;
Procedure kurang; {procedure ini menggunakan variabel global }
Begin { yang terletak di atas prosedur tambah }
Write(‘Nilai D =’);readln(d);
Write(‘Nilai E =’);readln(e);
f:=d-e;
Writeln(‘Nilai f= ‘,f:5);
End;
{ modul utama }
Begin
Clrscr;
Kali;
Tambah;
Kurang
Readln;
End.

II.Pengiriman parameter secara Nilai
Pada pengiriman parameter secara nilai ( by value), parameter formal akan berisi nilai yang dikirimkan dari parameter nyata dan nilai parameter tersebut akan local di procedure yang dikirim, sifat dari pengiriman nilai ini adalah satu arah, sehingga perubahan nilai dari parameter formal tidak akan mempengaruhi nilai parameter nyta.
Contoh:
Program pengiriman_parameter_secara_nilai;
Procedure kali(a,b : integer); {parameter formal}
Var
Hasil: integer; {local variabel}
Begin
Hasil:=a*b;
Writeln(‘Hasil =’,hasil:6);
End;
{ modul utama }
Var
Bil1,bil2: integer;
Begin
Write(‘Bilangan 1= ‘);readln(bil1);
Write(‘Bilangan 2= ‘);readln(bil2);
Kali(bil1,bil2); {parameter nyata }
Readln;
End.
Di bawah ini merupakan contoh bahwa perubahan pada parameter formal tidak akan mempengaruhi nilai parameter nyata, karena sifatnya adalah satu arah.
Procedure kali(a,b :integer);
Kali(bil1,bil2);
Contoh:
Program parameter_nilai_tidak_mempengaruhi_parameter_nyata;
Uses crt;
Procedure test_hitung(a,b,hasil: integer);
Begin
Hasil:=a*b;
Writeln(‘A=’,a:4,’B=’,b:4,’Hasil=’,hasil:6);
End;
{ modul utama }
Var
Bil1,bil2,bil3 : integer;
Begin
Bil1:=3;bil2:=4;bil3:=0;
Test_hitung(bil1,bil2,bil3);
Writeln(‘Bil1=’,bil1:4,’Bil2=’,bil2,’Bil3=’,bil3);
Readln;
End.

III.Pengiriman parameter secara acuan (by reference)
Sifat dari pengiriman parameter secara acuan adalah dua arah, artinya perubahan dari parameter formal akan mempengaruhi nilai dari parmaeter nyata. Cara deklarasi di procedure dengan kata cadangan Var seperti berikut :
Procedure kali(var a,b,c : integer);  parameter formal
Kali(x,y,z);  parameter nyata.
Contoh:
Program pengiriman_parameter_secara_acua;
Uses crt;
Procedure kali(var a,b,c: integer); {parameter formal acuan }
Begin
c:=a*b;
End;
{ modul utama }
Var
X,y,z : integer;
Begin
Write(‘Nilai x=’);readln(x);
Write(‘Nilai y=’);readln(y);
Kali(x,y,z); { mengirimkan parameter secara acuan}
Writeln(‘Nilai z= ‘,z:5);
Readln;
End.
Contoh penggunaan parameter secara acuan untuk perhitungan faktorial:
Program contoh_penggunaan_parameter_acuan;
Uses crt;
Procedure faktor(var banyak,hasil: integer);
Var
I : integer;
Begin
Hasil:=1;
For i:= 1 to banyak do
Begin
Hasil:=hasil*I;
End;
End;
{ modul utama }
Var
N,jumlah : integer;
Begin
Write(‘Berapa faktorial =’);readln(n);
Faktor(n,jumlah);
Writeln(n,jumlah);
Writeln(n:5,’ faktorial adalah =’,jumlah:6);
Readln;
End.
Contoh program dengan penggunaan procedure dengan parameter secara acuan pada perhitungan pangkat lebih besar dari 2:
Program pangkat;
Uses crt;
Procedure pangkat(var bil,hasil:real; pang:integer);
Var
I:=integer;
Begin
Hasil:=1;
For i:= 1 to pang do
Begin
Hasil:=hasil*bil;
End;
End;
{ modul utama }
Var
Angka,hasil: real;
Pang: integer;
Begin
Clrscr;
Write(‘Bilangan yang dipangkat=’);readln(angka);
Write(‘dipangkatkan= ‘);readln(pang);
Pangkat(angka,hasil,pang);
Write(‘hasil= ‘,hasil:5:2);
Readln;
End.

IV.Procedure memanggil procedure yang lain
Di dalam Pascal diperkenalkan procedure memanggil procedure yang lain seperti contoh berikut:
Program procedure_memanggil_procedure_yang_lain;
Uses crt;
Procedure satu(a1:integer);
Begin
Writeln(‘Nilai a=’,a1:2,’ada di procedure satu’);
End;
Procedure dua(a2:integer);
Begin
Writeln(‘Nila a=’,a2,’ada di procedure dua’);
Satu(a2);
End;
Procedure tiga(a3:integer);
Begin
Writeln(‘Nilai a=’,a3:2,’ada di procedure tiga’);
Dua(a3);
End;
Procedure empat(a4:integer);
Begin
Writeln(‘Nilai a=’,a4:2,’ada di procedure empat’);
Tiga(a4);
{ modul utama }
Var
A:integer;
Begin
Clrscr;
Write(‘Nilai a=’);readln(a);
Empat(a);
Readln;
End.

V.Procedure tersarang
Procedure tersarang adalah procedure yang terdapat di dalam procedure yang lain dan dipanggil oleh procedure diluarnya.
Program contoh_procedure_tersarang;
Uses crt;
Procedure satu; {deklarasi satu}
Procedure dua;
Begin { awal procedure dua }
Writeln(‘Procedure dua ada di prosedur satu’);
End; {akhir procedure dua}
Procedure tiga;
Begin
Writeln(‘Procedure tiga ada di procedure sat’);
End; {akhir procedure tiga}
Begin { awal procedure satu)
Writeln(‘Procedure satu’);
Dua; {memanggil prosedur dua}
Tiga; {memanggil prosedur tiga}
End; {akhir prosedur satu}
{ modul utama}
Begin
Clrscr;
Writeln(‘Modul utama’);
Satu; {memanggil prosedur satu}
Readln;
End.

OPERASI STRING
Penyeleksian String
Dua buah string dikatakan sama bila nilai string yang pertama isi dan panjangnya sama dengan nilai kedua. Blank(spasi kosong) dianggap nilai yang signifikan. Bila dua buah string di bandingkan, maka urutan nilainya akan digunakan urutan karakter yang sesuai dengan kode kode ASCII. Jadi karakter ‘A’ lebih kecil dari karakter ‘B’.
Contoh dalam program Pascal:
Uses crt;
Var
NamaAnda, NamaTeman : string[30];
Begin
Clrscr;
Write(‘Nama Anda : ‘);readln(namaAnda);
Write(‘Nama Teman : ‘);readln(namaTeman);
If NamaAnda = NamaTeman then
Writeln(‘Nama Anda sama dengan nama Teman Anda !’);
If NamaAnda <> NamaTeman then
Writeln(‘Nama Anda urutannya lebih besar dari Nama Teman Anda !’);
End.


Prosedur Standar Operasi String
1.Delete
Bentuk Umum : Delete(var s:string;index:integer;count:integer);
Contoh:
Uses crt;
Var
Kalimat : string[50];
Urutan,posisi : integer;
Panjang_kalimat : integer;
Begin
Clrscr;
Kalimat :=’Percobaan’;
Panjang_kalimat := length(kalimat); {fungsi length : panjang sebuah karakter }
For urutan := 1 to panjang_kalimat Do
Begin
Posisi := (panjang_kalimat + 2) – urutan;
Delete(kalimat, posisi, ,1);
Writeln(kalimat);
End;
End.

2.Insert
Bentuk Umum : Insert(source: string;var s:string;index:integer);
Digunakan untuk menyisipi (insert) suatu string (ditunjukkan oleh nilai string source), ke nilai string lainnya (ditunjukkan oleh nilai string s) nilai dari posisi yang ditunjukkan oleh nilai integer index. Bila hasil dari penyisipan menjadi string yang panjangnya lebih dari 255 karakter, maka hanya sampai dengan 255 karakter saja.
Contoh :
Uses crt;
Var kalimat : string[100};
Begin
Kalimat := ‘NORA’;
Clrscr;
Writeln(kalimat);
Insert(‘FEAR’,kalimat,3);
Writeln(kalimat);
End.

3.Str
Bentuk Umum : Str(x[:width{:decimals}; var s : string);
Digunakan untuk mengubah nilai numerik (ditunjukkan oleh nilai x) menjadi nilai string (ditunjukkan oleh variabel string s). Nilai x dapat berupa nilai integer atau real. Hasil dari ubahan dapat terformat atau tidak terformat. Bila width atau decimals disebutkan, maka akan dihasilkan nilai string dengan format(bentuk) panjang tertentu.
Contoh:
Uses crt;
Var
N1,n2 : integer;
S1,s2 : string[10];
Begin
Clrscr;
N1:=40;
N2:=35;
Writeln(‘n1 + n2 = ‘,n1+n2);
Str(n1,s1);
Str(n2,s2);
Writeln(‘s1 + s2 = ‘,s1+s2);
Str(n1:4,s1);
Str(n2:4,s2);
Writeln(‘s1 + s2 = ‘,s1+s2);
End.

4.Val
Bentuk Umum : val(s:string;v;var code);
Digunakan untuk mengkonversikan suatu nilai string (ditunjukkan oleh nilai s) menjadi nilai numerik (ditunjukkan oleh nilai variabel numerik v). Walaupun s merupakan nilai string, tetapi harus berisi angka atau tanda (+) atau (-), bila tidak berarti salah dan letak kesalahannya ditunjukkan oleh nilai variabel code. Nilai variabel code akan bernilai nol, bila tidak mengandung kesalahan.
Contoh:
Uses crt;
Vae
nilaiString : string[10];
nilaiReal : Real;
PosisiSalah : integer;
Begin
Clrscr;
NilaiString :=’123.45’;
Val(NilaiString,NilaiReal,PosisiSalah);
Writeln(‘Nilai String : ‘,NilaiString);
Writeln(‘Nilai Real : ‘,NilaiReal);
Writeln(‘Posisi Salah : ‘,posisiSalah);
End.

FUNGSI STANDAR OPERASI STRING
1.Copy
Bentuk Umum : Copy(s:string;index:integer;count:integer):string;
Fungsi ini digunakan untuk menyalin(copy) sejumlah karakter yang disalin ditunjukkan oleh nilai count mulai dari posisi yang ditunjukkan oleh index dari nilai string yang ditunjukkan oleh s.
Contoh dalam program:
Var
Kalimat : string[100];
Hasil : string[100];
Begin
Kalimat:=’ABCDEFGHIJKLMNOPQRSTUVWXYZ’;
Writeln(kalimat);
Hasil:=Copy(kalimat,4,6);
Writeln(hasil);
Writeln(Copy(kalimat,9,1));
End.

2.Concat
Bentuk Umum : Concat(s1[,s2,...,sn]:string):string);
Digunakan untuk menggabungkan beberapa string yang ditunjukkan oleh variabel s(n).
Contoh:
Const
Nama = ‘Pascal’;
Dll =’dan keluarga’;
Begin
Writeln(concat(‘Bahasa ‘,nama,’ untuk Anda ‘,dll);
End.

3.Pos
Bentuk Umum : Pos(substr:string; s:string):byte;
Digunakan untuk mencari posisi letak dari suatu string (yang ditunjukkan oleh substr) yang ada di dalam nilai string yang lain (ditunjukkan oleh s). Nilai yang dihasilkan adalah berupa nilai byte yang menunjukkan letaknya. Bila bernilai nol berarti nilai string yang dicari tidak ada.
Contoh:
Const
Alfabet =’ABCDEFGHIJKLMNOPQRSTUVWXYZ’;
Kar1 =’FGHI’;
Kar2=’F’;
Kar3=’JUGA’;
Kar4=’PQRST’;
Begin
Writeln(Alfabet);
Writeln;
Writeln(kar1,’ ada di posisi ke ‘,pos(kar1,alfabet));
Writeln(kar2,’ ada di posisi ke ‘,pos(kar2,alfabet));
Writeln(kar3,’ ada di posisi ke ‘,pos(kar3,alfabet));
Writeln(kar4,’ ada di posisi ke ‘,pos(kar4,alfabet));
End.
4.Length
Bentuk Umum: Length(s:string):integer;
Digunakan untuk menghitung panjang atau jumlah karakter yang ada di nilai string yang ditunjukkan oleh s. Hasil dari fungsi ini adalah nilai numerik integer positif.
Contoh:
Var
namaAnda : string[50];
Begin
Write(‘Nama Anda : ‘);readln(namaAnda);
Writeln(“Panjang nama Anda adalah ‘,Length(namaAnda),’ karakter.’);
End.


FUNGSI (FUNCTION)
Blok fungsi hampir sama dengan blok prosedur, hanya saja fungsi dapat mengembalikan nilai dari tipe yang dideklarasikannya. Contoh:
Function Hitung(Var A,B : integer):integer;
Begin
Hitung:=A+B;
End;
Var
X,Y :integer;
Begin
Write(‘Nilai X = ‘);readln(X);
Write(‘Nilai Y = ‘);readln(Y);
Writeln;
Writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y);
End.

RECORD
Record merupakan tipe data terstruktur yang terdiri dari item data dan masing-masing dapat mempunyai tipe data yang berbeda-beda. Item data itu dinamakan FIELD.

Deklarasi Record
Tipe data record diawali dengan keyword RECORD yang diikuti oleh suatu daftar field dan diakhiri dengan keyword END.

Contoh:
TYPE
Rec_langganan = record
Kode : string[10];
Nama : string[25];
Alamat : string[50];
Piutang: real;
End;
Var
Pelanggan : rec_langganan;

Atau mendeklarasikan langsung di bagian deklarasi variable.

Var
Pelanggan : record;
Kode : string[10];
Nama : string[25];
Alamat : string[50];
Piutang: real;
End;

MENGGUNAKAN TIPE DATA RECORD
Tipe data recordnya adalah “Rec_langganan” dan variable yang menggunakan tipe tersebut adalah “PELANGGAN”, jika ingin memberikan nilai ke salah satu field, contohnya field “NAMA” maka cara penulisannya adalah:

Pelanggan.Nama :=’Bla-bla bin bla’;


Contoh program:
Uses crt;
Type myRec = record
Nama : string[30];
Npm : string[8];
Kelas : string[6];
Nilai_mid : real;
Nilai_sem : real;
Nilai_rata : real;
End;
Var
Mhs : myRec;

Procedure Input;
Begin
Writeln(‘Input data Mahasiswa ‘);writeln;
Write(‘Nama Mahasiswa : ‘);readln(mhs.nama);
Write(‘Npm ……… : ‘);readln(mhs.npm);
Write(‘Kelas : ‘);readln(mhs.kelas);
Write(‘Nilai Mid : ‘);readln(mhs.nilai_mid);
Write(‘Nilai Semester : ‘);readln(mhs.nilai_sem);
End;
Function Hitung_nilai_rata(mid,sem : real) : real;
Var
Rasio1,rasio2 : real;
Begin
Rasio1 := mid*(70/100); { 70% dari nilai mid }
Rasio2 := sem*(30/100); { 30% dari nilai semester }
End;
Procedure proses;
Begin
Mhs.nilai_rata := Hitung_nilai_rata(mhs.nilai_mid, mhs.nilai_sem);
End;
Procedure cetak;
Begin
Writeln(‘Cetak Data Mahasiswa’); writeln;
Writeln(‘Nama Mahasiswa : ‘,mhs.nama);
Writeln(‘N.P.M : ‘,mhs.npm);
Writeln(‘Kelas : ‘,mhs.kelas);
Writeln(‘Nilai Mid : ‘,mhs.nilai_mid);
Writeln(‘Nilai Semester : ‘,mhs.nilai_sem);
Writeln(‘Nilai Rata-rata : ‘,mhs.nilai_rata);
End;
Begin
Clrscr;
Input;
Proses;
Writeln;
Cetak;
End.

Penulisan variabel record dapat dipersingkat dengan menggunakan statemen WITH.
Contoh:
Type
Hasil = RECORD
Jari_jari : Real;
Keliling : Real;
Luas : Real;
End;
Var
Lingkaran : Hasil;
Begin
With Lingkaran Do
Begin
Write(‘Jari-jari lingkaran : ‘);readln(jari_jari);
Keliling := 2*PI*jari_jari;
Luas:= PI*SQR(jari_jari);
Writeln;
Writeln(‘Keliling Lingkaran = ‘,keliling:7:2);
Writeln(‘Luas Lingkaran = ‘,luas:7:2);
End;
End.

Contoh program Record menggunakan Array.
Uses crt;
Type myRec = Record
Nama : string[30];
Npm : string[8];
Kelas : string[6];
Nilai_mid : real;
Nilai_sem : real;
Nilai_rata : real;
End;
Var
Mhs : array[1..100] of myRec;
Tombol : char;
Nomo : integer;
Procedure BikinGaris(x,y,max:integer;k:char);
Var
a : integer;
Begin
For a:= 0 to max-1 do
Begin
Gotoxy(x+a,y);
Write(k);
End;
Writeln;
End;
Procedure Input;
Begin
Repeat
Clrscr;
Inc(nomor);
Writeln(‘Input Data Mahasiswa yang ke: ‘,nomor);writeln;
With mhs(nomor) do
Begin
Write(‘Nama Mahasiswa : ‘);readln(nama);
Write(‘NPM : ‘);readln(npm);
Write(‘Kelas : ‘);readln(kelas);
Write(‘Nilai Ujian Mid : ‘);readln(nilai_mid);
Write(‘Nilai Ujian Semester : ‘);readln(nilai_sem);
End;
Writeln;
Write(‘Anda Mau Input Lagi[Y/T] ?’);
Tombol:=readkey;
{ readkey, berfungsi untuk membaca 1 karakter dari keyboard }
Until tombol in[‘T’,’t’];
End;
Function Hitung_Nilai_Rata(mid,sem:real):real;
Var
rasio1,rasio2 : real;
Begin
rasio1 := mid*(70/100); { 70% dari nilai mid }
rasio2 := sem*(30/100); { 30% dari nilai semester }
Hitung_nilai_rata := rasio1 + rasio2;
End;
Procedure proses;
Var
i : integer;
Begin
For i:= 1 to nomor do
Mhs[i].nilai_rata:=Hitung_nilai_rata(mhs[i].nilai_mid,mhs[i].nilai_sem);
End;
Procedure Cetak;
Var
I : integer;
Begin
Clrscr;
Writeln(‘Cetak Data Mahasiswa di Monitor’);writeln;
BikinGaris(1,wherey,72,’=’);
End;
{ Modul utama }
Begin
Clrscr;
Input;
Proses;
Cetak;
End.


F I L E
File (berkas) adalah kumpulan sejumlah komponen yang bertipe data sama, yang jumlahnya tidak tertentu. Pengertian file atau berkas di analogikan dengan simpanan arsip.
Di dalam Pascal, berkas menyediakan data yang nantinya akan digunakan oleh suatu program. Berkas dapat berupa disk file yaitu media penyimpanan yang berupa cakram magnetis, pita magnetis, kartu plong dan media-media penyimpanan lainnya.
Berkas mempunyai sifat sebagai berkas berurutan (Sequential File), dimana untuk membaca record ke-10 misalnya, maka pembacaan harus dilakukan dari record 1,2,3 dan seterusnya. Atau dapat pula sebagai berkas acak (Random File).

Mendeklarasikan FILE
Type var1 = File of var2;
Atau
Var var1 = File of var2;
Contoh:
Type
Tipe_data = Record
Nama : string[25];
Alamat : string[50];
No_telp : string[15];
Usia : integer;;
End;
Var
File_data : File of Tipe_data
D_Data : Tipe_Data;


OPERASI PADA FILE
1.Statemen ASSIGN
Statemen ini digunakan untuk memilih/membuka berkas yang akan dioperasikan sesuai dengan tipe berkas yang kita deklarasikan.
ASSIGN(variabel_berkas, nama_berkas);
Contoh:
Assign(File_data,’biodata.dat’);

2.Statemen CLOSE
Close digunakan untuk menutup berkas yang telah dibuka oleh statemen assign. Dan hanya menyebutkan variabel_berkasnya saja tanpa nama berkas.
Contoh:
Close(File_Data);



3.Statemen REWRITE
Digunakan untuk membuat berkas baru yang telah dinyatakan dengan variabel berkas. Jika berkas tersebut sudah ada dalam media penyimpanan, maka berkas tersebut akan digantikan dengan berkas yang baru.
Contoh:
REWRITE(File_Data);

4.Statemen RESET
Digunakan untuk mengeset penunjuk komponen kembali ke nomor 0.
Contoh:
RESET(File_Data);

5.Statemen WRITE
Statemen ini digunakan untuk menuliskan komponen berkas (data) ke dalam media penyimpan. Dan akan menempatkan komponen baru tersebut di akhir record.

6.Statemen READ
Read digunakan untuk membaca komponen berkas dari dalam media penyimpanan. Pembacaan disesuaikan dengan posisi penunjuk komponen, setelah selesai membaca, posisi penunjuk komponen akan ditempatkan ke komponen berkas berikutnya.
READ(variabel_berkas,variabel_komponen_berkas);
Contoh:
READ(File_Data,D_Data);

7.Statemen SEEK
Digunakan untuk menggerakkan penunjuk komponen ke nomor tertentu. Dengan nomor awal record adalah 0.
SEEK(variabel_berkas, nomor_record);
Contoh:
SEEK(File_Data,3); { diarahkan ke komponen yang ketiga }

8.Fungsi FILEPOS
Fungsi ini digunakan untuk mengetahui letak penunjuk(pointer) komponen berada. Dan hasilnya berupa bilangan bulat yang menunjukkan posisi penunjuk komponen pada saat itu.
FILEPOS(variabel_berkas);

Contoh:
Posisi := FILEPOS(File_Data);

9.Fungsi FILESIZE
Digunakan untuk mengetahui ukuran dari suatu berkas (file). Jika fungsi ini bernilai 0 berarti berkas tersebut masih kosong.
FILESIZE(variabel_berkas);
Contoh:
Ukuran := FILESIZE(File_Data); { ukuran data dalam satuan byte }

10.Fungsi EOF
Fungsi ini digunakan untuk mengetahui apakah penunjuk komponen berada di akhir berkas (End Of File =EOF), jika YA maka bernilai TRUE dan jika tidak maka bernilai FALSE.
EOF(variabel_berkas);
Contoh:
Akhir_File := EOF(File_Data);

11.Statemen FLUSH
Flush digunakan untuk mengosongkan penyangga (buffer) dari berkas, dengan demikian akan memastikan bahwa isi penyangga telah dituliskan dalam media penyimpan setelah statemen WRITE selesai dikerjakan.
Contoh:
FLUSH(File_Data);

12.Statemen ERASE
Erase digunakan untuk menghapus file atau berkas yang telah tertutup atau sedang tidak digunakan.
ERASE(variabel_berkas);
Contoh:
ERASE(File_Data);

13.Statemen RENAME
Digunakan untuk memberi nama baru pada berkas yang dinyatakan oleh variabel berkas. Dan hanya dapat dilakukan pada berkas yang tertutup.
RENAME(variabel_berkas, nama_baru);
Contoh:
RENAME(File_Data,’baru.dat’);

Contoh Program Lengkap :

Uses Crt;
Type
Nilai = Record
Nama : string[25];
Npm : string[8];
Nilai_mid :real;
Nilai_sem :real;
Nilai_rata :real;
End;
Var
File_Nilai : File of Nilai;
Nilai_Mhs : Nilai;
i, j : integer;
Lagi : char;
Function Hitung_nilai_Rata(mid, sem : real):real;
Var
Rasio1,rasio2 : real;
Begin
Rasio1 := mid*(70/100); { 70% dari nilai mid }
Rasio2 := sem*(30/100); { 30% dari nilai semester }
Hitung_nilai_rata := rasio1 + rasio2;
End;
Begin
Assign(File_Nilai,’Mhs.dat’);
Rewrite(File_Nilai);
I := 0;
Repeat
Inc(i);
Clrscr;
Writeln(‘Mengisi data pada File “Mhs.Dat”......’);
Writeln(‘----------------------------------------------‘);
Writeln(‘Mengisi Data ke-‘,i:2);
Writeln;
With Nilai_Mhs Do
Begin
Nilai_rata :=0.0;
Write(‘Nama Mahasiswa : ‘);readln(nama);
Write(‘NPM Mahasiswa : ‘);readln(npm);
Write(‘Nilai Mid Test : ‘);readln(nilai_mid);
Write(‘Nilai Semester Test : ‘);readln(nilai_sem);
Nilai_rata := Hitung_nilai_rata(Nilai_mid, Nilai_sem);
End;
Write(File_Nilai, Nilai_Mhs);
Writeln;
Write(‘Akan Mengisi Lagi [a atau idak] : ‘);readln(lagi);
Until Not (Lagi in [‘Y’,’y’]);
Close (File_Nilai);
End.


Uses crt;
Const
Garis=’----------------------------------------------------------------------------------------------------------------‘;
Type
Nilai = Record
Nama : string[25];
Nilai_mid : string[8];
Nilai_sem : real;
Nilai_rata : real;
End;
Var
File_Nilai : File Of Nilai;
Nilai_Mhs : Nilai;
i,j,jumlah_data : integer;
Lagi : char;
Function Hitung_nilai_Rata(mid, sem : real):real;
Var
Rasio1,rasio2 : real;
Begin
Rasio1 := mid*(70/100); { 70% dari nilai mid }
Rasio2 := sem*(30/100); { 30% dari nilai semester }
Hitung_nilai_rata := rasio1 + rasio2;
End;
Begin
Assign(File_nilai,’Mhs.dat’);
Reset(File_nilai);
Clrscr;
Writeln(‘ ‘:20,’DAFTAR NILAI UJIAN MAHASISWA’);
Writeln(‘ ‘:20,’-------------------------------------------------‘);
Writeln;
Writeln(garis);
Write(‘| No | Nama Mahasiswa | NPM |’);
Writeln(‘ MID | SEM | RATA |’);
Writeln(garis);
For i:=1 to jumlah_data Do
Begin
Read(file_nilai,nilai_mhs);
Gotoxy(1,wherey);write(‘| ‘,i:2,’ | ‘);
With Nilai_mhs Do
Begin
Gotoxy(8,wherey);write(‘| ‘,npm);
Gotoxy(35,wherey);write(‘| ‘,npm);
Gotoxy(46,wherey);write(‘| ‘,nilai_mid:2:1);
Gotoxy(54,wherey);write(‘| ‘,nilai_sem:2:1);
Gotoxy(62,wherey);write(‘| ‘,nilai_rata:2:1,’ | ‘);
End;
Writeln;
End;
Writeln(garis);
Close(File_nilai);
End.

Reference :

Pranata, Anthony., Algoritma Pemrograman, J&J Learning,Yogyakarta
Sutopo, Anton, Pemrograman Komputer Dasar, 2005,Yogyakarta
Hadi S., Chendra, Memahami Struktur dan Elemen pada bahasa Pemrograman, 2003, www.ilmukomputer.com
Ir.P. Insap Santosa, M.Sc. Dasar-dasar Pemrograman Pascal, Teori dan Program terapan.