Professional Documents
Culture Documents
Pendahuluan
Pemrograman komputer adalah perpaduan antara ilmu-pengetahuan dan seni. Suatu program komputer mungkin dapat bekerja dengan baik - mungkin memberikan hasil yang benar dengan batasan-batasan yang diberikan tetapi juga 'dengan canggung' dapat dikurangi, atau 'kepintaran-nya dapat ditingkatkan setiap kali seorang programmer-ahli (expert) mengambil suatu gaya baru. Keberadaan berbagai jenis komputer dan bahasa komputer kemudian mempersulit tugas/tampilan beberapa program komputer. Pembelajaran tentang 'pemrograman-komputer' ini, ditujukan bagi pebelajar yang kurang lebih telah memahami dasar-dasar 'sistem-operasi' DOS/Windows. Pembelajaran mencakup bahasa pemrograman (berbasis DOS) BASIC, FORTRAN, dan Pascal. Tidak semua elemen dari ketiga bahasa tersebut di uraikan, tetapi minimal dapat mengenal bahasa -pemrograman ini dengan aturan-aturan dasarnya secara umum. Uraian lengkap dapat di lihat pada manual dari Compiler bahasa -nya. Tampilan hasil program masih konvensional (output pada konsol), dengan menggunakan program bantu Crimson-Editor (for Windows) Ingyu Kang, ketiga compiler dapat kita konfigurasikan dengan editor ini, selanjutnya ketiga bahasa dapat dituliskan dan dipelajari dalam satu editor. Untuk kalangan teknik sipil, banyak penulis telah menyertakan contoh program di dalam bukunya , mungkin hal itu dapat meningkatkan 'minat' siswa untuk belajar mengenal bahasa pemrograman .
Saran:
cBAS.CMD
Simpan pada Folder C:\BK31\QB45
cFOR.CMD
Simpan pada Folder C:\BK31\FOR51
3
cPAS.CMD
Simpan pada Folder C:\BK31\TP70\BIN
4
Akan tampak jendela seperti pada Gambar. Klik pada bagian User Tools dengan Hot-Key: Ctrl+1 Ketik teks BASIC pada bidang Menu Text Ketik pada bidang Command C:\BK31\QB45\cBAS.cmd Klik tombol pada bagian kanan bidang Argument, Klik File Title Klik tombol pada bagian kanan bidang Initial Dir, Klik File Directory Klik/Hilangkan tanda pada bagian Close on exit
Dengan cara yang sama dapat dibuat konfigurasi untuk FORTRAN dan PASCAL. Tahap akhir adalah dengan menyimpan setting yang dibuat dengan meng-klik tombol Save Tools, dan berikan nama sesuai keinginan. Sewaktu-waktu jika konfigurasi dibutuhkan setelah ada konfigurasi baru lain yang dibuat, kita dapat mengklik tombol Load Tools, dan memilih kembali konfigurasi tersebut.
Setelah konfigurasi BASIC, FORTRAN, dan PASCAL dibuat, pada jendela utama menu Tools akan tampak gambar seperti berikut: Dengan konfigurasi ini, ketiga jenis program yang dibuat dari bahasa BASIC, FORTRAN dan PASCAL dapat di Compile/Run melalui Crimson Editor dengan menekan tombol keyboard: Ctrl+1 Ctrl+2 Ctrl+3 ( BASIC ) ( FORTRAN ) ( PASCAL )
Struktur Program Dasar (BASIC, FORTRAN, dan Pascal) Setiap bahasa pemprograman mempunyai beberapa istilah/kata penting yang disebut keywords. Pada beberapa jenis editor keywords akan ditandai dengan warna berbeda. Dalam pembahasan ini keywords pada BASIC, FORTRAN, dan Pascal berwarna biru. Struktur program dasar dari ketiga bahasa dapat dilihat pada tabel berikut:
Ms-QuickBASIC
Ms-FORTRAN
TurboPascal
Ms-FORTRAN
Format penulisan dengan format kolom dan format bebas. Untuk format kolom: Kolom 1-5 untuk no.label program Kolom 6 untuk tanda penghubung baris program yang di tulis lebih dari 1 baris. Kolom 7-72 untuk penulisan program Kolom 73-80 untuk dokumentasi Komentar harus di awali dengan karakter , c, atau C pada kolom-1. Untuk format bebas harus digunakan metacommand $FREEFORM di awal program. Komentar harus di awali karakter (kutip ganda) pada kolom-1 Karakter ! digunakan sebagai awal komentar pada bagian akhir baris program.
TurboPascal
Format penulisan bebas. Komentar program harus diawali dengan dua karakter ( dan diakhiri dengan dua karakter ) Dua karakter ini tidak boleh diantarai oleh karakter lain. Komentar program juga dapat diawali karakter { dan diakhir karakter }.
10
Ms-FORTRAN
Setiap statement harus ditulis dalam satu baris. Penulisan statement yang melebihi kolom 72, dapat dilanjutkan ke baris berikutnya, dengan memberi tanda satu karakter pada kolom ke-6 pada baris lanjutan tersebut. Karakter pada kolom ke-6 ini dapat berupa semua karakter yang ada, kecuali angka nol, atau spasi. Nomor label pada kolom 1-5 adalah suatu angka bulat (integer) 1 sampai 99999. Penulisan no.label tidak harus berurut.
TurboPascal
Beberapa statement dapat ditulis dalam satu baris. Karakter titik-koma ; sebagai akhir dari suatu statement. Statement End pada akhir program utama diakhiri tanda titik, spt: End. Label didefenisikan dengan menuliskan statement label. Label 10, lanjut; goto 10; statement; 10: writeln; Penulisan label sama dgn BASIC.
Penulisan statement atau variabel dengan huruf besar (uppercase), maupun huruf kecil (lowercase), memiliki arti yang sama pada ke-tiga jenis bahasa pemrograman ini, pada bahasa C/C++, nama variabel bersifat case-sensitive.
11
Ms-FORTRAN
Karakter alphabetik AZ, az Karakter numerik 09 Karakter khusus *|+| |. | / BASIC ** simbol pangkat/exponent = operator penugasan/assignment Karakter untuk format data I, F format data Integer, Real E format data Real/eksponen D format data Real Double-precision L format data Logika A format data Karakter/String / format karakter Enter X format karakter spasi $, \ format input data
TurboPascal
Karakter alphabetik A-Z, a-z Karakter numerik 0-9 Karakter khusus *|+| |. | / |< | > BASIC := statement penugasan [ ] pembatas nilai array . . tanda batasan nilai array Karakter prefix/suffix bilangan $ awalan bil. heksa-desimal B akhiran bil. biner O akhiran bil. oktal H akhiran bil. Heksa-desimal Karakter untuk format data :
12
Ms-FORTRAN
Program . . . Implicit . . . Parameter . . . Real . . . Integer . . . Character . . . Logical . . . Dimension . . . Double Precision . . . Common . . . Data . . . statement ... End Subroutine . . . ! ! ! ! ! ! ! ! ! ! nama program def. tipe data konstanta var. bil. real var. bil. bulat var. string var. logika var. array var. presisi ganda var. global
TurboPascal
Program . . . ; Uses . . . ; Const . . . ; Label . . . ; Type . . . ; Var . . . ; Procedure . . . ; Function . . . ; { { { { { { nama program } klausa uses } konstanta } label } def. tipe data} variabel }
{ prosedur } { fungsi }
Begin
statement ; ... End. { statement-Pascal} { akhir prg.utama }
13
Ms-FORTRAN
Program Utama
Blok program utama
TurboPascal
Program Utama; ... Procedure S1( ); Begin
prosedur S1
sub program fungsi awal prg.utama dapat memanggil S1 dan F1 akhir prg.utama awal Sub S1 dapat memanggil fungsi F1 akhir Sub S1 awal fungsi F1 dapat memanggil Sub S1 akhir fungsi F1
! awal prg.utama ! dapat memanggil ! S1 dan F1 ! akhir prg.utama ! awal Subrutin S1 ! dapat memanggil ! fungsi F1 ! akhir Subrutin S1 ! awal fungsi F1 ! dapat memanggil ! Sub S1 ! akhir fungsi F1
End;
Function F1( ) : type; Begin
fungsi F1
{ End prosedur S1 }
{ { { { { { { { { awal Fungsi F1 } Begin Fungsi F1 } dapat memanggil } prosedur S1 } End Fungsi F1 } Begin prog.utama } dapat memanggil } S1 dan F1 } End prog.utama }
End;
Begin
prog. utama
End Function
End
End.
14
Suatu ekspresi/ungkapan terdiri atas operand dan operator, operand dapat berupa ekspresi karakter/string, konstanta numerik, variabel, atau suatu nilai yang diperoleh dari kombinasi konstanta, variabel dan ekspresi lain dengan operator, atau operand dapat berupa suatu fungsi standar pada bahasa bersangkutan. Operator Aritmatika ^ * / \ + mod mod = sisa bagi Contoh: 19 mod 6.7 = 5 Operator Relasi/Hubungan = <> < > <= >= Hasil berupa tipe Logika: bukan nol = benar, nol = salah output BASIC: 1 = benar, 0 = salah Operator Logika
NOT AND OR XOR EQV IMP
Operator Aritmatika * / div + mod div = pembagian bil. Bulat K mod J = K (K div J) * J Menghitung pangkat dua digunakan fungsi Sqr(x) Operator Relasi/Hubungan = <> < > <= >= Hasil berupa tipe Logika: bukan nol = benar, nol = salah output Pascal: TRUE /1 = benar, FALSE/0 = salah Operator Logika/Boolean
Operator Relasi/Hubungan
.EQ. .NE. .LT. .GT. .LE. .GE. Hasil berupa tipe Logika: .TRUE. = benar, .FALSE. = salah
15
Tipe Data
Ms-QuickBASIC
Tipe Data Suffix
INTEGER LONG SINGLE DOUBLE STRING*n | | | | | % & ! # $
Ms-FORTRAN
Tipe Data
IMPLICIT type (v...) INTEGER*1 (Byte) INTEGER*2 INTEGER [*4] REAL [*4] REAL*8 DOUBLE PRECISION COMPLEX [*8|*16] DOUBLE COMPLEX LOGICAL [*1|*2|*4] CHARACTER [*n] -128 ~ 127 -32768 ~ 32767 2.1E+9 ~ 2,1E+9 1,4E-45 ~ 3.4E+38 2,2D-308~ 1.8D+308 REAL*8 REAL [*4 | *8] COMPLEX*16 n = 1 ~ 32767
TurboPascal
Tipe Data
Shortint Byte Integer Word Longint Real Single Double Extended Comp String | String[ ] Boolean Char Set
Setiap bahasa pemrograman mempunyai tipe/jenis data dan batasan/rentang dari tipe data tersebut. Batasan
-32767 ~ 32767 -2.1E+9 ~ 2,1E+9 1,4E-45 ~ 3.4E+38 4,9D-324~ 1.8D+308 0 ~ 32767 v adalah huruf awal dari nama variabel yg diantarai dengan koma, dan dapat ditulis dgn cara, spt: AZ (variabel dgn huruf awal A s/d var. dgn huruf awal Z).
Batasan
Batasan
-128 ~ 127 0 ~ 255 -32768 ~ 32767 0 ~ 65535 2.1E+9 ~ 2,1E+9 2.9e-39 ~ 1.7e38 1.5e-45 ~ 3.4e38 5.0e-324 ~ 1.7e308 3.4e-4932 ~ 1.1e4932 -9.2e18 ~ 9.2e18 1 ~ 255
User define
di buat pemrogram
User define
di buat pemrogram
User define
di buat pemrogram
16
Ms-FORTRAN
IMPLICIT INTEGER (IN) IMPLICIT REAL (AH, OZ) PARAMETER REAL INTEGER LOGICAL DIMENSION CHARACTER (PI = 3.14159265) P, Q I, J Oke, Error Vektor(10), X(3) , Y(3) Nama*15, Lagi ! data X ! data Y
TurboPascal
data X data Y
Const EBaja = 2100000; Var P, Q : Real; I, J : Integer; Oke, Error : Boolean; Vektor : Array[1..10] of Real; Nama : String[15]; Lagi : Char; Const X : Array[1..3] of Real = (0.0, 2.5, 3.5); Y : Array[1..3] of Real = (2.1, 4.2, 5.2);
Oke = TRUE : Lagi = TRUE Statement DATA selalu berpasangan dengan statement READ Dua baris statement IMPLICIT di atas adalah default pada FORTRAN
17
Ms-QuickBASIC
PRINT [ daftareksp ] [ { , | ; } ] PRINT USING formatstr; daftareksp [ { , | ; } ] INPUT [ ; ] [ promptstr { ; | , } ] daftar-var LINE INPUT [ ; ] [ promptstr ; ] varstr Formatstring untuk data numerik # mewakili setiap dgit angka . titik desimal ^^^^ format eksponen E+^^ +| tanda positif atau negatif ** | $$ mencetak tanda * atau $ *$$ kombinasi tanda * dan $ , tanda koma untuk angka seribuan _ data berikutnya adalah literal Formatstring untuk data string ! mencetak karakter pertama string \ \ mencetak 2+n (n=spasi) & mencetak semua bidang-data string
Ms-FORTRAN
PRINT { *, | formatspec } [, dftr-io] WRITE (unitspec, formatspec) dftr-io READ (unitspec, formatspec) dftr-io label FORMAT(daftar-edit) Formatspec untuk tipe data Iw[.m] bilangan bulat/Integer Fw.d bilangan real Ew.d[Ee] bilangan real eksponen Dw.d real double-precision A[w] data karakter/string Lw tipe data Logika Ket: m = jumlah digit nol w = lebar data d = jum. digit setelah titik desimal e = eksponen Formatspec umum \ | $ mencetak tanpa Enter X mencetak spasi / sama dengan ENTER
TurboPascal
Writeln ( V1 [, V2, ... , Vn ] ) ; Write ( V1 [, V2, ... , Vn ] ) ; Readln ( V1 [, V2, ... , Vn ] ) ; Read ( V1 [, V2, ... , Vn ] ) ; Format Output data numerik Writeln ( [ . . . . ,] V : w : d ) ; Format Intput data Write ( . . . . . . ) ; Ket: V = variabel w = lebar data d = jum. digit setelah titik desimal Write dan Read umum digunakan dalam menulis dan membaca data pada media berupa file.
18
Ms-QuickBASIC
FOR var = awal TO akhir [ STEP inc ] [ statement ] [ EXIT FOR ] Keluar dari FOR..NEXT [ statement ] NEXT [ var [ , var . . . ] ] DO [ { WHILE | UNTIL } eks-logika ] [ statement ] [ EXIT DO ] Keluar dari DO..LOOP [ statement ] LOOP DO [ statement ] [ EXIT DO ] Keluar dari DO..LOOP [ statement ] LOOP [ { WHILE | UNTIL } eks-logika ] WHILE kondisi [ statement ] WEND
Ms-FORTRAN
DO [ label [,] ] dovar = awal, akhir [, inc] [ statement ] [ CYCLE ] ! Ke awal DO Loop [ EXIT ] ! Keluar dari DO Loop [ statement ] label CONTINUE | END DO DO [ label [, ] ] WHILE ( eks-logika ) [ statement ] [ CYCLE ] ! Ke awal DO Loop [ EXIT ] ! Keluar dari DO Loop [ statement ] label CONTINUE | END DO
TurboPascal
While eks-logika Do statement ; While eks-logika Do Begin statement ; . . . ; [ break; | continue; ] . . . ; End; For var := awal To akhir Do statement ; For var := awal DownTo akhir Do Begin statement ; . . . ; [ break; | continue; ] . . . ; End; Repeat statement ; [ break; | continue; ] . . . ; Until eks-logika;
19
Ms-QuickBASIC
IF eksp-logika THEN bgn-then [ ELSE bgn-else ] IF eksp-logika1 THEN [ blok-statement-1 ] [ ELSE IF eksp-logika2 THEN [ blok-statement-2 ] ] ... [ ELSE [ blok-statement-n ] ] END IF SELECT CASE test-ekspresi [ CASE daftar-ekspresi1 ] [ blok-statement-1 ] [ CASE daftar-ekspresi2 [ blok-statement-2 ] ] . . . [ CASE ELSE [ blok-statement-n ] ] END SELECT
Ms-FORTRAN
IF ( eksp-logika ) statement IF ( eksp-logika1 ) THEN [ blok-statement-1 ] [ ELSE IF ( eksp-logika2 ) THEN [ blok-statement-2 ] ] ... [ ELSE [ blok-statement-n ] ] END IF SELECT CASE ( test-ekspresi ) [ CASE ( daftar-ekspresi1 ) [ blok-statement ] [ CASE ( daftar-ekspresi2 ) [ blok-statement-2 ] ] . . . [ CASE DEFAULT [ blok-statement-n ] ] END SELECT
TurboPascal
If eksp Then statement ; If eksp Then Begin statement ; . . .; End; If eksp Then statement ; Else statement ; If eksp Then Begin statement ; . . .; End Else Begin statement ; . . .; End; { Ket: eksp adalah suatu ekspresi-logika } Case test-ekspresi Of daftar-ekspresi1: statement ; ... daftar-ekspresi2: statement ; [ Else statement ; ] End;
20
Operasi Matematika
Ms-QuickBASIC
Operasi x , | x | Min, Maks Sine, Cosine x Tangent x ArcTangent x Eksponen (e x) e Log x Pembulatan x Konv. ke Integer Konv. ke Real
10 Log x
Ms-FORTRAN
Operasi x , | x | Min, Maks Sine, Cosine x Tangent x Arc-SCT x Cotangent HyperbolycSCT Eksponen (e x) e Log x 10 Log x Pembulatan x Pembulatan x Konv. ke Integer Konv. ke Real Fungsi SQRT(x), ABS(x) MIN(), MAX() SIN(x), COS(x) TAN(x) A{SIN|COS|TAN}(x) COTAN(x) {SIN|COS|TAN}H(x) EXP(x) LOG(x) LOG10(x) {A|D}INT(x) {A|D}NINT(x) {NINT|IDNINT}(x) INT(x) | IFIX(x) REAL(x) | FLOAT(x) Operasi , x , | x | Min, Maks Sine, Cosine x ArcTangent Eksponen (e x) e Log x Nilai pecahan Pembulatan x Pembulatan x Pembulatan x xn Tan(x) ArcSin(x) ArcCos(x) 10 Log x
TurboPascal
Fungsi Pi , Sqrt (x), Abs (x) Min (), Max () Sin (x), Cos (x) ArcTan (x) Exp (x) Ln (x) Frac (x) Trunc (x) Round (x) Int (x) Exp (n * Ln(x)) Sin (x) / Cos(x) ArcTan (x/Sqrt (1Sqr(x))) ArcTan (Sqrt (1Sqr(x)) / x) Ln(x) / Ln(10)
Fungsi SQR(x), ABS(x) MIN(), MAX() SIN(x), COS(x) TAN(x) ATN(x) EXP(x) LOG(x) INT(x) | FIX(x) CINT(x) | CLNG(x) CSNG(x) | CDBL(x) LOG(x)/LOG(10.#)
21
Sub Program
Ms-QuickBASIC Ms-FORTRAN TurboPascal
Semua bahasa pemrograman memiliki prosedur/modul-modul program bawaan yang telah siap digunakan, modul program bawaan ini dapat berupa suatu prosedur/subprogram atau suatu fungsi yang tersimpan pada Library Compiler Bahasa tersebut. Modul dalam bentuk Prosedur dapat langsung dijalankan dengan menuliskan nama prosedurnya (dan argumen yang mengikutinya jika ada), dan yang berupa fungsi dapat diproses seperti halnya istilah fungsi pada matematika. Prosedur atau fungsi juga dapat dibuat sendiri oleh pembuat program sesuai dengan keperluan. Beberapa prosedur/fungsi bawaan dari BASIC, FORTRAN dan Pascal, dapat dilihat seperti berikut Fungsi INKEY$ LEFT$(arg) RIGHT$(arg) LCASE$(arg) UCASE$(arg) LEN(arg) dll . . . dan fungsi matematika Ket Untuk fungsi data string terdapat karakter $ sebagai akhiran nama fungsinya. Subrutin SEED(arg) RANDOM(arg) GETTIM(arg) GETDAT(arg) dll . . . Prosedur/subrutin diproses dgn cara CALL namasubrutin Fungsi LEN(arg) LEN_TRIM (arg) INDEX(arg) dll . . . dan fungsi matematika Prosedur Writeln(arg) ; Write(arg) ; Readln(arg) ; Read(arg) ; Clrscr; dll . . . Beberapa prosedur/ fungsi biasanya ber dasarkan pada unit yang digunakan. Fungsi Length(arg) ; Upcase(arg) ; Readkey; Keypressed; dll . . . dan fungsi matematika
22
Ms-QuickBASIC
Ms-FORTRAN
TurboPascal
Contoh Program
Tugas; Jelaskan arti dari setiap baris program Buat Flow-Chart program
Compiler Tools
Microsoft QuickBASIC v4.5 (C) Copyright Microsoft Corporation, 1985-1988. Microsoft (R) FORTRAN Optimizing Compiler Version 5.10. Copyright (c) Microsoft Corp 1982-1991. Turbo Pascal Version 7.0 Copyright (c) 1983,92 Borland International.. Crimson Editor 3.70 Release (Freeware). Copyright (C) 1999-2004 Ingyu Kang,
23
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
PROGRAM-1 (BASIC) POLYGON.BAS PROGRAM UNTUK MENGHITUNG LUAS POLYGON DIM X(21) AS SINGLE, Y(21) AS SINGLE, LUAS AS SINGLE DIM I AS INTEGER, JT AS INTEGER, LAGI AS STRING*1 DO DO CLS PRINT MENGHITUNG LUAS POLYGON INPUT JUMLAH TITIK PADA POLYGON = , JT LOOP WHILE (JT < 3 OR JT > 20) PRINT PRINT INPUT DATA KOORDINAT (M): PRINT FOR I = 1 TO JT PRINT X(; I; ), Y(; I; ) = ; INPUT X(I), Y(I) NEXT LUAS = 0 X(JT+1) = X(1) Y(JT+1) = Y(1) FOR I = X1 = Y1 = LUAS NEXT 1 TO JT X(I) + X(I+1) Y(I) - Y(I+1) = LUAS + 0.5 * X1 * Y1
LUAS = ABS(LUAS) PRINT PRINT USING LUAS POLYGON = ###.### M2; LUAS PRINT INPUT MASIH MAU MENGHITUNG (Y,T) = , LAGI LOOP UNTIL UCASE$(LAGI) <> Y END
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
PROGRAM-2 (BASIC) INTERPOL.BAS PROGRAM INTERPOLASI LINEAR DIM X(5) AS SINGLE, Y(5) AS SINGLE DIM I AS INTEGER DATA 0.0, 2.5, 3.5, 4.5, 6.5 DATA 2.123, 4.235, 5.201, 7.781, 10.015 FOR I = 1 TO 5: READ X(I): NEXT FOR I = 1 TO 5: READ Y(I): NEXT CLS PRINT << INTERPOLASI LINEAR >> PRINT PRINT [TABEL] PRINT --------------------- PRINT X Y PRINT --------------------- FOR I = 1 TO 5 PRINT USING "###.# ##.###"; X(I); Y(I) NEXT PRINT --------------------- Lagi: PRINT : INPUT INPUT NILAI X = , XN IF (XN < X(1) OR XN > X(5)) THEN PRINT NILAI, DILUAR [TABEL] GOTO Lagi END IF FOR I = 1 TO 5 IF (XN >= X(I) AND XN <= X(I + 1)) THEN YN = Y(I) + (XN-X(I)) * (Y(I+1) - Y(I)) / (X(I+1) - X(I)) PRINT USING NILAI Y = ##.###; YN END END IF NEXT END
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
PROGRAM-3 (BASIC) BALOK.BAS PROGRAM MENGHITUNG REAKSI & MOMEN BALOK SEDERHANA DIM P(1 TO 5) AS SINGLE, XP(1 TO 5) AS SINGLE DIM JP AS INTEGER, j AS INTEGER, i AS INTEGER CLS : PRINT REAKSI DAN MOMEN BALOK (SENDI.ROL) PRINT AKIBAT BEBAN TERPUSAT, (P): PRINT INPUT Jumlah Beban Terpusat (P) = , JP INPUT Panjang Batang (m) = , XL PRINT PRINT Input Beban P (Ton), dan Jaraknya (XP) dari Tump.Kiri (m) FOR i = 1 TO JP Ulang: PRINT P(; i; ), XP(; i; ) = ; INPUT , P(i), XP(i) IF XP(i) < 0 OR XP(i) > XL THEN PRINT Jarak Beban tidak memenuhi ! GOTO Ulang END IF SP = SP + P(i) SPX = SPX + P(i) * (XL - XP(i)) NEXT VA = SPX/XL: VB = SP VA ---Reaksi Tumpuan, VA dan VB PRINT: PRINT Reaksi Tumpuan: PRINT USING VA = ###.##### T; VA PRINT USING VB = ###.##### T; VB --- Hitung & Cetak Momen pada posisi Beban P PRINT: PRINT Momen: TX = 0 FOR i = 1 TO JP SMP = 0 FOR j = 1 TO i - 1 IF i = 1 THEN EXIT FOR SMP = SMP + P(j) * (XP(i) - XP(j)) NEXT TMX = VA * XP(i) - SMP PRINT USING Titik ## = ###.##### Tm; i; TMX IF TMX > TX THEN TMAX = TMX TX = TMAX NEXT --- Momen Maksimum PRINT PRINT USING Momen Maksimum = ###.##### Tm; TMAX END
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
* PROGRAM-1 (FORTRAN) * POLYGON.FOR C234567 REAL CHARACTER LOGICAL X(21), Y(21), X1, Y1, LUAS LAGI*1 YA/.TRUE./
DO WHILE (YA) PRINT * !--> atau WRITE(*,*) PRINT *, MENGHITUNG LUAS POLYGON WRITE(*,*) MENGHITUNG LUAS POLYGON JT = 0 DO WHILE (JT .LT. 3 .OR. JT .GT. 20) PRINT 1, Jumlah Titik pada Polygon = READ(*,*) JT !--> atau READ *, JT END DO PRINT (/1X,A/), INPUT DATA KOORDINAT (M) DO 10 I=1,JT PRINT 2, X(,I,), Y(,I,) = READ(*,*) X(I), Y(I) !--> atau READ *, X(I), Y(I) CONTINUE LUAS = 0 X(JT+1) = X(1) Y(JT+1) = Y(1) DO I=1,JT X1 = X(I) + X(I+1) Y1 = Y(I) - Y(I+1) LUAS = LUAS + 0.5*X1*Y1 END DO LUAS = ABS(LUAS) C38= PRINT (/1X,A,F8.3,A), Luas Polygon = ,LUAS, M2 WRITE(*,(/1X,A,F8.3,A)) Luas Polygon = ,LUAS, M2 PRINT 1, Masih mau Menghitung ? (Y,T) = READ(*,(A1)) LAGI ! atau READ (A1), LAGI IF (LAGI .EQ. T .OR. LAGI .EQ. t) YA = .FALSE. END DO 1 2 FORMAT(/1X,A\) FORMAT(1X,2(A,I2),A\) END
C12=
10
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
* PROGRAM-2 (FORTRAN) * INTERPOL.FOR C234567 REAL DATA X(5), Y(5) X /0.0, 2.5, 3.5, 4.5, 6.5/, Y /2.123, 4.235, 5.201, 7.781, 12.015/
PRINT *, << INTERPOLASI LINEAR >> PRINT * PRINT PRINT PRINT PRINT 10 20 *, *, *, *, [TABEL XY] ---------------------- X Y ----------------------
30
WRITE(*,(/1X,A\)) INPUT NILAI X = READ *, XN IF (XN .LT. X(1) .OR. XN .GT. X(5)) THEN PRINT *, NILAI, DILUAR [TABEL]... GOTO 30 ENDIF DO I=1,5 IF (XN .GE. X(I) .AND. XN .LE. X(I+1)) THEN YN = Y(I) + (XN-X(I))*(Y(I+1)-Y(I))/(X(I+1)-X(I)) WRITE (*,(1X,A,F6.3/)) NILAI Y = ,YN READ * ! Tunggu penekanan tombol <enter> EXIT ENDIF END DO END
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
$FREEFORM PROGRAM-3 (FORTRAN) BALOK.FOR DIMENSION P(5), XP(5) PRINT *, REAKSI DAN MOMEN BALOK (SENDI.ROL) PRINT *, AKIBAT BEBAN TERPUSAT, (P) PRINT (/1X,A\), Jumlah Beban Terpusat (P) = READ *, JP PRINT (1X,A\), Panjang Batang (m) = READ *, XL PRINT * PRINT *,Input Beban P (Ton), dan Jarak (XP) dari Tump.Kiri (m) DO i=1,JP 2 WRITE(*,(1X,A,I2,A,I2,A\)) P(, I, ), XP(, I, ) = READ *, P(i), XP(i) IF (XP(i) .LT. 0 .OR. XP(i) .GT. XL) THEN PRINT *, Jarak Beban tidak memenuhi ! GOTO 2 ENDIF SP = SP+P(i) SPX = SPX+P(i) * (XL-XP(i)) END DO VA = SPX/XL VB = SPVA PRINT (/A), Reaksi Tumpuan: WRITE(*,(1X, VA = ,F9.5, T)) VA WRITE(*,(1X, VB = ,F9.5, T)) VB PRINT (/A), Momen: TX = 0 DO i=1,JP SMP = 0 DO j = 1, i-1 IF (i .EQ. 1) EXIT SMP = SMP + P(j) * (XP(i)-XP(j)) END DO TMX = VA * XP(i) - SMP PRINT (1X,A,I2,A,F9.5,A), Titik , i, = , TMX, Tm IF (TMX .GT. TX) TMAX = TMX TX = TMAX END DO PRINT (/1X,A,F9.5,A), Momen Maksimum = ,TMAX, Tm END
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
(* PROGRAM-1 (Pascal) POLYGON.PAS *) Uses Crt; Var X, Y : Array[1..21] of Real; X1, Y1, Luas : Real; I, JT : Integer; Lagi : Char; Begin Repeat JT := 0; While (JT < 3) Or (JT > 20) Do Begin ClrScr; Writeln(MENGHITUNG LUAS POLYGON); Write(JUMLAH TITIK PADA POLYGON = ); ReadLn(JT); End; {--> Akhir While... } Writeln; Writeln(INPUT DATA KOORDINAT (M)); WriteLn; For I := 1 To JT Do Begin Write(X[, I,], Y[, I, ] = ); ReadLn(X[I], Y[I]); End; Luas := 0; X[JT+1] := X[1]; Y[JT+1] := Y[1]; For I := 1 To JT Do Begin X1 := X[I] + X[I+1]; Y1 := Y[I] Y[I+1]; Luas := Luas + 0.5*X1*Y1; End; Luas := Abs(Luas); WriteLn; WriteLn(LUAS POLYGON = ,Luas:7:3, M2); WriteLn; Write(MASIH MAU MENGHITUNG (Y,T) = ); ReadLn(Lagi); Until UpCase(Lagi) <> Y; End. { --> Akhir Repeat...Until }
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
(* PROGRAM-2 (Pascal) INTERPOL.PAS *) Uses Crt; Const X : Array[1..5] of Real = (0.0,2.5,3.5,4.5,6.5); Y : Array[1..5] of Real = (2.123,4.235,5.201,7.781,10.015); Var Xn, Yn : Real; i : Integer; Label Lagi; Begin Clrscr; WriteLn(<< INTERPOLASI LINEAR>>); WriteLn; WriteLn([TABEL-XY]); WriteLn(---------------------'); WriteLn( X Y '); WriteLn(---------------------'); For i := 1 To 5 Do WriteLn(X[i]:5:1, ,Y[i]:6:3); WriteLn(---------------------); Lagi: WriteLn; Write(INPUT NILAI X = ); ReadLn(Xn); If (Xn < X[1]) OR (Xn > X[5]) Then Begin WriteLn(NILAI, DILUAR [TABEL]...); Goto Lagi; End; For i := 1 To 5 Do Begin If (Xn >= X[i]) AND (Xn < X[i+1]) Then Begin Yn := Y[i]+(Xn-X[i])*(Y[i+1]-Y[i])/(X[i+1]-X[i]); WriteLn( NILAI Y = ,Yn:6:3); ReadLn; Halt; End; End; End.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
{ PROGRAM-3 (Pascal) BALOK.PAS } Uses Crt; Var P, XP : Array[1..10] of Real; XL, SP, SPX, VA, VB, TX, TMX, TMAX, SMP : Real; JP, i, j : Integer; Label 20; Begin ClrScr; WriteLn(REAKSI DAN MOMEN BALOK (SENDI.ROL)); WriteLn(AKIBAT BEBAN TERPUSAT, (P)); WriteLn; Write(Jumlah Beban Terpusat (P) = ); ReadLn(JP); Write(Panjang Batang (m) = ); ReadLn(XL); WriteLn; WriteLn(Beban P (Ton), dan Jaraknya (XP) dari Tump. Kiri (m)); SP := 0; SPX := 0; For i := 1 To JP Do Begin 20: Write(P[,i,], XP[,i,] = ); ReadLn(P[i], XP[i]); If (XP[i] < 0) Or (XP[i] > XL) Then Begin WriteLn(Jarak Beban tidak memenuhi !); Goto 20; End; SP := SP + P[i]; SPX := SPX + P[i] * (XL-XP[i]); End; VA := SPX/XL; VB := SP-VA; { Reaksi Tumpuan VA & VB } WriteLn; WriteLn(Reaksi Tumpuan:); WriteLn(VA = , VA:9:4, T); WriteLn(VB = , VB:9:4, T); WriteLn; WriteLn(Momen:); TX := 0; TMAX := 0; For i := 1 To JP Do Begin SMP := 0; For j := 1 To i-1 Do Begin If i=1 Then Break; SMP := SMP + P[j] * (XP[i] - XP[j]); End; TMX := VA * XP[i] - SMP; WriteLn(Titik , i:2, = , TMX:9:4, Tm); If TMX > TX Then TMAX := TMX; TX := TMAX; End; WriteLn; WriteLn(Momen Maksimum = ,TMAX:9:4, Tm); ReadLn; End.