A. Struktur Program Pascal
Struktur program pascal :
Judul program
Bagian deklarasi
- deklarasi variabel
- deklarasi konstanta
- deklarasi tipe
- deklarasi label
- deklarasi prosedur
- deklarasi fungsi
Bagian pernyataan
Begin

|
___________
___________
___________
End.
B. Type Data (3) :
1. Type data sederhana (simple-type data) :
a. type data standar (standar data type):
- Integer ( bilangan bulat)
Type | Memory | Jangkauan |
Byte | 1 | 0 .. 255 |
Shortint | 1 | -128 .. 127 |
Integer | 2 | -32768 .. 32767 |
Word | 2 | 0 .. 65535 |
Longint | 4 | 2147483648 .. 2147483647 |
- Real (bilangan pecahan)
Nilai dari type data ini berkisar antara 1E-38 sampai dengan 1E+38, dengan mantisa yang signifikan sampai dengan 11 digit, dan akan menempati memory sebesar 6 byte.
Nilai dari type ini berupa sebuah karakter yang ditulis diantara tanda petik tunggal.
- String
Nilai dari type ini berupa kumpulan karakter yang ditulis diantara tanda petik tunggal
Type data boolean mempunyai dua buah nilai, yaitu True dan False
- Type data didefinisikan oleh pemakai (user-defined data type);
- enumerated atau scalar type
- subrange type
Type data Ordinal
Type data ordinal(ordinal type) adalah tipe data yang merupakan subset dari tipe data sederhana (type data standar dan tipe data yang didefinisikan sendiri oleh pemakai).
- Type data standar (integer, shortint, longint, byte, word, boolean dan char). Type data numerik real tidak termasuk type data standar.
- Type data yang didefinisikan sendiri oleh pemakai
Contoh :
Pada nilai numerik Byte, 0 tidak mempunyai predecessor karena merupakan nilai yang pertama. Tetapi mempunyai successor, yaitu nilai 1,2,3 dan seterusnya samapi dengan nilai 255.
Pada karakter ‘b’ mempunyai predecessor ‘a’, dan mempunyai successor ‘c’,’d’ dan seterusnya.
2) Fungsi standar Ord dapat digunakan untuk menghasilkan nilai urutannya.
Misalnya : Ord(‘a’) akan menghasilkan nilai 97, yaitu nilai urutan yang sesuai dengan kode ASCII.
3) Fungsi standar Pred, digunakan untuk mengahsilkan predeccessor dari nilai datanya.
2. Type data terstruktur (structured-type data) :
a. Array
b. Record
c. File
d. Set
3. Type data penunjuk (pointer type data)
Suatu pointer adalah suatu variabel yang berisi alamat(address) di memori(RAM) dimana suatu data disimpan, bukan berisi data itu sendiri. Dengan kata lain, pointer akan menunjukan letak dari data di memopri.
Prosedur Standar Operasi String
1. Delete
BU : Delete( var s: string ; index : integer ; count: integer );
Digunakan untuk menghapus(delete) sejumlah karakter (yang ditunjukan oleh count:integer), mulai dari posisi tertentu (yang ditunjukan oleh index : integer) dari suatu string (yang ditunjukan oleh var s: string). Jika posisi index lebih besar dari panjang string s, maka tidak ada karakter yang terhapus.
Contoh potongan program :
Kota :=’PURWOKERTO’;
Delete(kota,3,6);
Writeln(kota);
Output : PUTO
2. Insert
BU : Insert( source: string ; var s:string ;index : integer );
Contoh:
Kota :=’PURWOKERTO’;
Insert(‘SATRIA’,kota,4);
Writeln(kota);
Output : PURSATRIAWOKERTO
3. Str
BU : Str( x [: wdth[: decimals]] ; var s:string );
Digunakan untuk merubah nilai numerik (yang ditunjukan oleh nilai x ), menjadi nilai string (yang ditunjukan oleh variabel s). Nilai x dapat berupa nilai integer maupun nilai real.
Contoh:
NILAI := 1234;
HURUF := str(NILAI);
Writeln(HURUF);
Output : 1234 (type data HURUF adalah string)
4. Val
BU : Val( s:string ; v ; var code );
Digunakan untuk merubah nilai string (yang ditunjukan oleh variabel s), , menjadi nilai numerik (yang ditunjukan oleh variabel v). Nilai s berupa nilai string yang berisi angka, bila terjadi kesalahan, akan ditunjukan pada variabel code yang bernilai integer. Apabila benar, maka code bernilai 0.
Contoh:
HURUF :=’123’;
val(HURUF,ANGKA,N);
Writeln(ANGKA, ‘ ‘, N);
Output : 123 0
(nilai N=0, karena konversinya benar)
Fungsi Standar Operasi String
1. COPY
BU : Copy( var s: string ; index : integer ; count: integer ):string;
Digunakan untuk menyalin(copy) sejumlah karakter (yang ditunjukan oleh count:integer), mulai dari posisi tertentu (yang ditunjukan oleh index : integer) dari suatu string (yang ditunjukan oleh var s: string).
Contoh potongan program :
Kota :=’PURWOKERTO’;
Huruf := copy(kota,3,2);
Writeln(Huruf);
2. CONCAT
BU : ConCat( s1 [, s2 , … , sN : string ):string;
Digunakan untuk merangkai/menggabungkan beberapa nilai string yang ditunjukan oleh nilai string s1, s2, … , sN. Fungsi ini sama dengan operasi string ‘+’.
Kota :=’PURWOKERTO’;
Huruf :=’SATRIA’;
GB:=Concat(kota,huruf);
Writeln(GB);
3. POS
BU : POS( substring : string ; s : string) : byte;
Digunakan untuk mencari posisi letak dari suatu nilai string (ditunjukan oleh substr) yang ada didalam nilai string yang lain (ditunjukan oleh s). Akan bernilai 0, jika nilai string yang dicari tidak ada.
Contoh potongan program :
Kota :=’PURWOKERTO’;
X:= pos(‘R’,kota);
Y:= pos(‘PUR’,Kota);
Writeln(X);
Writeln(Y);
4. LENGTH
BU : LENGTH( s : string) : integer;
Digunakan untuk menghitung panjang/jumlah karakter yang terdapat pada nilai string yang ditunjukan oleh s.
Kota :=’PURWOKERTO’;
X:= length(kota);
Writeln(X);
C. Bitwise Operator
1. Operator And
digunakan untuk membandingkan 2 buah elemen, hasilnya akan benar jika kedua-duanya bernilai benar. Logika benar dengan simbol 1 dan salah dengan simbol 0.
Contoh :
00100 atau sama dengan 4
2. Operator Or
Contoh :
11111 atau sama dengan 31
3. Operator Xor
Contoh :
4. Operator Not (bitwise negation)
Contoh :
· 5 angka binernya 00000101
· Nilai tersebut dibalik, sehingga menjadi 11111010
· sign bit menunjukan nilai negatif, untuk mengartikannya, nilai tersebut dikurangi dengan bit , sehingga sebagai barikut :
· Kemudian semua nilai bit dibalik, menjadi : 00000110
23 = 10111 dibalik menjadi
11111101000, kurangi 1 menjadi
11111100111 dibalik menjadi
00000011000 (-24)
5. Operator Shl
Contoh :
6. Operator Shr
Digunakan untuk menggeser (shift) sejumlah bit kekanan (Right) dengan bit 0
Contoh :
1.
IF <kondisi> THEN
___________statement1;
___________statement2;
___________statement3;
___________statement4;
___________statement5;
___________statement6;
___________statement7;
___________statement8;
___________statement9;
___________statement10;
Jika kondisi/syarat bernilai benar maka akan mengerjakan statement1, selanjutnya stat_2 dst
Jika kondisi/syarat bernilai salah maka akan mengerjakan statement2, selanjutnya stat_3 dst.
B: 1,2,3 dst
2.IF <kondisi> THEN
___________statement1
else
___________statement2;
___________statement3;
___________statement4;
___________statement5;
___________statement6;
___________statement7;
___________statement8;
___________statement9;
___________statement10;
Jika kondisi/syarat bernilai benar maka akan mengerjakan statement1, selanjutnya stat_3 dst
Jika kondisi/syarat bernilai salah maka akan mengerjakan statement2, selanjutnya stat_3 dst.
3.IF <kondisi> THEN
begin
___________statement1
___________statement2;
___________statement3;
___________statement4;
End;
___________statement5;
___________statement6;
___________statement7;
___________statement8;
___________statement9;
___________statement10;
Jika kondisi/syarat bernilai benar maka akan mengerjakan semua statement yang berada diantara blok begin … end (stat_ 1 ..4); selanjutnya stat_5 dst
Jika kondisi/syarat bernilai salah maka akan mengerjakan statement5, selanjutnya stat_6 dst.
4. IF <kondisi> THEN
begin
___________statement1
___________statement2;
___________statement3;
___________statement4;
End;
___________statement5;
___________statement6;
___________statement7;
___________statement8;
___________statement9;
___________statement10;
Jika kondisi/syarat bernilai benar maka akan mengerjakan semua statement yang berada diantara blok begin … end (stat_ 1 ..4); selanjutnya stat_5 dst
Jika kondisi/syarat bernilai salah maka akan mengerjakan statement5, selanjutnya stat_6 dst.
5. IF <kondisi> THEN
begin
___________statement1
___________statement2;
___________statement3;
___________statement4;
End
else
___________statement5;
___________statement6;
___________statement7;
___________statement8;
___________statement9;
___________statement10;
Jika kondisi/syarat bernilai benar maka akan mengerjakan semua statement yang berada diantara blok begin … end (stat_ 1 ..4); selanjutnya stat_6 dst
Jika kondisi/syarat bernilai salah maka akan mengerjakan statement5, selanjutnya stat_6 dst.
6. IF <kondisi> THEN
begin
___________statement1
___________statement2;
___________statement3;
___________statement4;
End
Else
begin
___________statement5;
___________statement6;
___________statement7;
___________statement8;
End;
___________statement9;
___________statement10;
Jika kondisi/syarat bernilai benar maka akan mengerjakan semua statement yang berada diantara blok begin … end (stat_ 1 ..4); selanjutnya stat_9 dst
Jika kondisi/syarat bernilai salah maka akan mengerjakan statement5, selanjutnya stat_6 dst.
Contoh soal dengan menggunakan LOOPING FOR :
1. USES WINCRT;O
VAR
N, X, Y, Z : INTEGER;
BEGIN
X:=5;
Y:=2;
FOR N:=1 TO 5 DO
X:= X + N;
WRITELN(N);
Y:= Y + N;
Z:= X + Y +Z;
WRITELN(X:5, Y:5, Z:5 );
END.
2. USES WINCRT;
BEGIN
X:=5;
Y:=2;
FOR N:=1 TO 5 DO
BEGIN
X:= X + N;
WRITELN(N);
END;
Y:= Y + N;
Z:= X + Y +Z;
WRITELN(X:5, Y:5, Z:5 );
END.
3. USES WINCRT;
BEGIN
X:=5;
Y:=2;
FOR N:=1 TO 5 DO
BEGIN
X:= X + N;
WRITELN(N);
Y:= Y + N;
END;
Z:= X + Y +Z;
WRITELN(X:5, Y:5, Z:5 );
END.
4. USES WINCRT;
VAR
N, X, Y, Z : INTEGER;
BEGIN
X:=5;
Y:=2;
WHILE N<5 DO
BEGIN
X:= X + N;
N:=N+1;
WRITELN(N);
Y:= Y + N;
END;
Z:= X + Y +Z;
WRITELN(X:5, Y:5, Z:5 );
END.
WRITELN(X:5, Y:5, Z:5 );
END.
5. USES WINCRT;
VAR
N, X, Y, Z : INTEGER;
BEGIN
X:=5;
Y:=2;
WHILE N<10 DO
BEGIN
X:= X + N;
IF N<8 THEN
INC(N,3);
N:=N+1;
WRITELN(N);
Y:= Y + N;
END;
Z:= X + Y +Z;
WRITELN(X:5, Y:5, Z:5 );
END.
6. USES WINCRT;
VAR
N, X, Y, Z : INTEGER;
BEGIN
X:=5;
Y:=2;
WHILE N<10 DO
BEGIN
X:= X + N;
IF N<8 THEN
INC(N,3)
ELSE
N:=N+1;
WRITELN(N);
Y:= Y + N;
END;
Z:= X + Y +Z;
WRITELN(X:5, Y:5, Z:5 );
END.
7. USES WINCRT;
VAR
N, X, Y, Z : INTEGER;
BEGIN
X:=5;
Y:=2;
WHILE N<10 DO
BEGIN
X:= X + N;
IF N<8 THEN
BEGIN
INC(N,3);
WRITELN(N);
END;
INC(N);
Y:= Y + N;
END;
Z:= X + Y +Z;
WRITELN(X:5, Y:5, Z:5 );
END.
8. USES WINCRT;
VAR
N, X, Y, Z : INTEGER;
BEGIN
X:=5;
Y:=2;
WHILE N<10 DO
BEGIN
X:= X + N;
IF N<8 THEN
BEGIN
INC(N,3);
WRITELN(N);
END
ELSE
N:=N+1;
Y:= Y + N;
END;
Z:= X + Y +Z;
WRITELN(X:5, Y:5, Z:5 );
END.
9. USES WINCRT;
10. USES WINCRT;
11. USES WINCRT;
VAR
A, N, X, Y, Z : INTEGER;
BEGIN
X:=5;
Y:=2;
FOR N:=1 TO 2 DO
BEGIN
FOR A:=1 TO 3 DO
BEGIN
X:= X + N;
WRITELN(N:5, A:5);
END;
END;
Y:= Y + N;
Z:= X + Y +Z;
WRITELN(X:5, Y:5, Z:5 );
END.
12. USES WINCRT;
VAR
A, N, X, Y, Z : INTEGER;
BEGIN
X:=5;
Y:=2;
FOR N:=1 TO 2 DO
BEGIN
FOR A:=1 TO 3 DO
X:= X + N;
WRITELN(N:5, A:5);
END;
Y:= Y + N;
Z:= X + Y +Z;
WRITELN(X:5, Y:5, Z:5 );
END.
Bentuk Soal dengan menggunakan IF :
1. USES WINCRT;
VAR
X,Y,Z : INTEGER;
BEGIN
X:=5;
Y:=2;
IF X>Y THEN
X:= X + Y;
Y:= Y + X;
Z:= Z + X + Y;
WRITELN( X:5, Y:5, Z:5);
END.
2. USES WINCRT;
VAR
X,Y,Z : INTEGER;
BEGIN
X:=5;
Y:=2;
IF X<Y THEN
X:= X + Y;
Y:= Y + X;
Z:= Z + X + Y;
WRITELN( X:5, Y:5, Z:5);
END.
3. USES WINCRT;
VAR
X,Y,Z : INTEGER;
BEGIN
X:=5;
Y:=2;
IF X>Y THEN
BEGIN
X:= X + Y;
Y:= Y + X;
END;
Z:= Z + X + Y;
WRITELN( X:5, Y:5, Z:5);
END.
4. USES WINCRT;
VAR
X,Y,Z : INTEGER;
BEGIN
X:=5;
Y:=2;
IF X<Y THEN
BEGIN
X:= X + Y;
Y:= Y + X;
END;
Z:= Z + X + Y;
WRITELN( X:5, Y:5, Z:5);
END.
5. USES WINCRT;
VAR
X,Y,Z : INTEGER;
BEGIN
X:=5;
Y:=2;
IF X>Y THEN
X:= X + Y
ELSE
Y:= Y + X;
Z:= Z + X + Y;
WRITELN( X:5, Y:5, Z:5);
END.
6. USES WINCRT;
VAR
X,Y,Z : INTEGER;
BEGIN
X:=5;
Y:=2;
IF X<Y THEN
X:= X + Y
ELSE
Y:= Y + X;
Z:= Z + X + Y;
WRITELN( X:5, Y:5, Z:5);
END.
7. USES WINCRT;
VAR
X,Y,Z : INTEGER;
BEGIN
X:=5;
Y:=2;
IF X>Y THEN
BEGIN
X:= X + Y;
Y:= Y + X;
END
ELSE
Z:= Z + X + Y;
WRITELN( X:5, Y:5, Z:5);
END.
8. USES WINCRT;
VAR
X,Y,Z : INTEGER;
BEGIN
X:=5;
Y:=2;
IF X<Y THEN
BEGIN
X:= X + Y;
Y:= Y + X;
END
ELSE
Z:= Z + X + Y;
WRITELN( X:5, Y:5, Z:5);
END.
PROSEDUR
Prosedur adalah program terpisah dalam blok tersendiri yang berfungsi sebagai subprogram. Prosedur diawali dengan Keyword (kata cadangan) Procedure, dan dipanggil oleh blok program yang lain dengan menyebutkan judul prosedurnya.
- Penerapan konsep program mudular, yaitu memecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur- prosedur.
- Untuk hal-hal yang sering dilakukan berulang-ulang.
var
a, b : integer;

var
c, d : integer;

![]() | |
![]() |
END;

COBA;
END.
Pendeklarasian variabel didalam prosedur akan bersifat lokal, artinya variabel tersebut hanya dapat digunakan pada prosedur yang bersangkutan. Dalam contoh diatas variabel c dan d adalah bersifat lokal.
var
|
a,b :integer;
procedure coba1;
var
x,a:integer;
begin
a:=10;
b:=10;
end;
procedure coba2;
var
y,b:integer;
begin
a:=1;
b:=1;
end;
begin
a:=2;
b:=5;
writeln(a:10, b:10);
coba1;
writeln(a:10,b:10);
coba2;
writeln(a:10,b:10);
end.
PROSEDURE dengan parameter
Parameter yang dikirim dari modul utama(pemanggil) disebut parameter nyata (actual parameter), sedangkan parameter yang berada pada judul prosedur disebut parameter formal (formal parameter).
uses wincrt;
var
a,b :integer;




begin
inc(x,10);
inc(y,x);
end;
begin
a:=3;

writeln(a,' ',b);
hitung(A , B);
writeln(a,’ ‘,b);
end.
FUNGSI
Fungsi (function) hampir sama dengan prosedur, hanya fungsi harus dideklarasikan dengan tipe datanya. Tipe tersebut ditulis pada akhir deklarasi fungsi sebagai berikut :
FUNCTION identifier ( daftar parameter) : type;
Contoh pendelkarasian :
function hitung( x , y : integer) : integer;
Perbedaan antara fungsi dan prosedure
Fungsi | Prosedur | |
1. | Nilai yang dikirim balik terdapat pada nama fungsinya | Nilai yang dikirim balik terdapat pada parameter yang dikirim secara acuan |
2. | Karena nilai baliknya adalah nama fungsi itu sendiri, maka fungsi tersebut dapat digunakan langsung untuk mencetak nilainya. | Nama prosedur tidak dapat digunakan langsung untuk mencetak nilainya, tetapi terdapat pada parameternya yang mengandung nilai balik (by reference) |
contoh program
uses wincrt;
|
var
a,b :integer;
function hitung (x:integer;var y:integer):integer;
begin
inc(x,10);
inc(y,x);
hitung:=x+y;
end;
begin
a:=3;
b:=5;
writeln(hitung(a,b));
a:=hitung(a,b);
writeln(a);
end.
PROGRAM WELCOME :
uses WinCrt;
VAR
KATA,HRF:STRING;
X,Y,Z, JH : INTEGER;
N, M :LONGINT;
BEGIN
KATA:=' STMIK PWT';
JH := LENGTH(KATA);
FOR X:=1 TO 80-JH DO
BEGIN
GOTOXY(X,1); WRITELN(KATA);
FOR N:=1 TO 1000 DO
BEGIN
FOR M:=1 TO 1000 DO
BEGIN
END;
END;
END;
FOR Z:=1 TO JH DO
BEGIN
FOR X:= 1 TO 23 DO
BEGIN
HRF:=COPY(KATA,Z,1);
GOTOXY(79-(JH-Z),X); WRITELN(' ');
GOTOXY(79-(JH-Z),X+1); WRITELN(HRF);
FOR N:=1 TO 1000 DO
BEGIN
FOR M:=1 TO 10000 DO
BEGIN
END;
END;
END;
END;
end.
ULANG :
uses WinCrt;
VAR
A,T : INTEGER;
L:REAL;
LAGI:CHAR;
BEGIN
LAGI:='Y';
WHILE (LAGI='Y') OR (LAGI= 'y') DO
BEGIN
CLRSCR;
WRITELN;
WRITELN('HITUNG LUAS SEGI TIGA');
WRITE('ALAS : ') ; READLN(A);
WRITE('TINGGI : '); READLN(T);
L:=1/2*A*T;
WRITE('LUAS : ',L:2:2) ;
WRITELN;
WRITE('AKAN MENGHITUNG LAGI [Y/T] : '); READLN(LAGI);
END;
WRITELN;
WRITELN(' SELESAI ............................................. ');
END.
CONTOH PROGRAM :
1. uses wincrt;
begin
write('STMIK ');
write('WIDYA UTAMA ');
write('PURWOKERTO');
end.
STMIK WIDYA UTAMA PURWOKERTO
2. uses wincrt;
begin
writeln('STMIK');
write('WIDYA UTAMA');
write('PURWOKERTO');
end.
STMIK
WIDYA UTAMA PURWOKERTO
3. uses wincrt;
var
x,y,z : integer;
n : real;
begin
x:=3;
y:=11;
z:= y + x * 2;
writeln(Z);
n:= y/z;
writeln(n:2:2);
x:=y div z;
writeln(x);
end.
17
0.65
0
4. uses wincrt;
var
x,y,z : integer;
begin
x:=3;
y:=11;
z:= (y + x) * 2;
writeln(Z);
x:= y mod z;
writeln(x);
end.
28
11
5. uses wincrt;
var
x,y,z : integer;
n : real;
begin
readln(x);
readln(y);
z:= (y + x) * 2;
writeln(Z);
end.
6. uses wincrt;
var
x,y,z : integer;
n : real;
begin
write('Masukan Nilai x = ');
readln(x);
write('Masukan Nilai z = ');
readln(y);
z:= (y + x) * 2;
writeln(Z);
end.
7. uses wincrt;
var
x,y,z : integer;
begin
x:=5;
y:=10;
if x<y then
write('nilai x lebih kecil dari y')
else
write('nilai x lebih besar dari y');
end.
nilai x lebih kecil dari y
Tugas :
Buat Program Formula matematika :
- Luas Persegi panjang
- Lingkaran
PENGURUTAN DATA :
USES WINCRT;
VAR
NAMA : ARRAY[1..10] OF STRING;
NILAI : ARRAY[1..10] OF INTEGER;
X,Y,Z,VNILAI,N : INTEGER;
VNAMA,CARI : STRING;
ATAS,BAWAH,TENGAH,POSISI:INTEGER;
KETEMU:BOOLEAN;
LAGI:CHAR;
BEGIN
N:=9;
NAMA[1]:='ITA';
NAMA[2]:='WATI';
NAMA[3]:='BUDI';
NAMA[4]:='JOKO';
NAMA[5]:='TARI';
NAMA[6]:='SUSI';
NAMA[7]:='ANI';
NAMA[8]:='RUDI';
NAMA[9]:='PARTO';
NILAI[1]:=60;
NILAI[2]:=50;
NILAI[3]:=90;
NILAI[4]:=70;
NILAI[5]:=50;
NILAI[6]:=80;
NILAI[7]:=80;
NILAI[8]:=70;
NILAI[9]:=60;
{ PROSES PENGURUTAN DATA BUBLE SORT }
FOR X:=1 TO N-1 DO
BEGIN
FOR Y:=X+1 TO N DO
BEGIN
IF NAMA[X]>NAMA[Y] THEN
BEGIN
VNAMA:=NAMA[X];
NAMA[X]:=NAMA[Y];
NAMA[Y]:=VNAMA;
VNILAI:=NILAI[X];
NILAI[X]:=NILAI[Y];
NILAI[Y]:=VNILAI;
END
END
END;
WRITELN('DATA YANG SUDAH URUT');
WRITELN('====================');
WRITELN('NAMA':10,'NILAI':7);
WRITELN;
FOR X:=1 TO N DO
BEGIN
WRITELN(NAMA[X]:10,NILAI[X]:5);
END;
end.
0 komentar:
Posting Komentar