Minggu, 29 April 2012

Rapuhnya Ketahanan Nasional

Tiga pilar utama ketahanan nasional yakni ketahanan pangan, ketahanan energi dan ketahanan militer mengalami kerapuhan cukup signifikan. Di bidang pangan misalnya, impornya terus meningkat baik volume maupun nilai, seperti impor beras, kedele, jagung bahkan garam. Tiap tahunnya tidak kurang dari 5,2 miliar dolar AS devisa yang dikuras untuk impor komoditas pangan tersebut.

Di bidang energi, Indonesia yang dulunya pendiri dan anggota negara-negara pengekspor minyak (OPEC), kini mengimpor minyak dalam jumlah dan harga yang juga terus meningkat. Apalagi kalau terjadi gejolak di negara produsen seperti situasi saat ini di Timur Tengah dan Afrika Utara.

Kerapuhan di bidang ketahanan energi juga ditandai dengan lemahnya manajemen energi mulai dari eksplorasi, eksploitasi, produksi sampai distribusi. Contohnya Riau, penghasil sekitar 60 persen minyak Indonesia dengan dua kilang bahan bakar minyak (BBM) di Dumai dan Sungai Pakning, mengalami kelangkaan BBM sejak pekan lalu. Kelangkaan BBM di Riau ini, ibarat ayam bertelur di lumbung padi yang mati kelaparan.

Sementara kerapuhan ketahanan di bidang militer ditandai dengan dominasi alat utama sistem senjata (alutsista) untuk kebutuhan TNI dan Polri yang juga masih diimpor. Sementara industri pertahanan pelat merah seperti PT. PAL, PT. Pindad dan PTDI mati suri karena kesulitan keuangan dan kalah bersaing dengan produk sejenis buatan luar negeri.

Sebenarnya kita beruntung mempunyai presiden dengan latar belakang pengetahuan yang mumpuni di bidang ketahanan pangan, ketahanan energi dan ketahanan militer. Sebagai doktor di bidang ekonomi pertanian dari IPB, tentunya Presiden Susilo Bambang Yudhoyono memahami problematika pertanian dan petani sebagai tokoh sentralnya.

Demikian pula sebagai mantan Menteri Pertambangan dan Energi, Presiden SBY memiliki kemampuan dan penguasaan masalah di bidang energi. Apalagi masalah militer, SBY yang lulusan terbaik AKABRI Darat tahun 1973 dan oleh pers asing dijuluki sebagai Jenderal Pemikir itu sangat memahani apa dan bagaimana ketahanan militer yang seharusnya dimiliki Indonesia.

Dengan kemampuan intelektual dan pengalaman yang luas di bidang ketahanan nasional, kita tidak meragukan semua kebijakan pemerintah di bawah kepemimpinan Presiden SBY untuk menciptakan ketahanan di bidang pangan, energi dan militer. Sayangnya dalam implementasinya kebijakan tersebut tidak terlaksana sebagaimana mestinya.

Di bidang energi misalnya, sejak Kabinet Indonesia Bersatu (KIB) Jilid I SBY sudah mengeluarkan berbagai kebijakan. Seperti Inpres No. 1/2006  tentang Penyediaan dan Pemanfaatan Bahan Baku Nabati Untuk Biofuel Sebagai Bahan Bakar, Perpres No.5/2006 tentang Kebijakan Energi Nasional dan Inpres No.2/2006 tentang Penyediaan dan Pemanfaatan Batu Bara Yang Dicairkan Sebagai Bahan Bakar Lain serta UU No.30/2007 tentang Energi.

Sementara untuk meningkatkan ketahanan nasional di bidang militer, Presiden SBY telah membentuk  Komite Kebijakan Industri Pertahanan (KKIP). Di bidang pangan, kebijakan terbaru adalah Inpres No.5/2011 yang menginstruksikan 15 menteri, BMKG, BPN, Kapolri, Gubernur, Bupati/Walikota seluruh Indonesia untuk melakukan respon cepat atas kondisi pangan nasional.

Sayangnya, berbagai kebijakan Presiden SBY tersebut kurang mendapat dukungan dari aparatur pemerintah, terutama di daerah. Sejak otonomi daerah diberlakukan, terkadang kebijakan pusat memang tidak sinergis dengan kepentingan Pemda.

Untuk mensinergiskan kebijakan pemerintah, baik antara instansi pemerintah di pusat, maupun antara pemerintah pusat dan Pemda, perlu perbaikan komunikasi. Demikian pula halnya untuk mensinergiskan kerjasama antara parpol pendukung SBY, juga perlu perbaikan komunikasi antara Presiden SBY sebagai ketua koalisasi dengan parpol-parpol anggota koalisi. 

Sumber : http://madina.co.id/index.php/kolom/tajuk/9122-rapuhnya-ketahanan-nasional.html

Jumat, 13 April 2012

Data Mahasiswa with Turbo Pascal

PROGRAM MENU_FILE;
USES CRT;
TYPE    MHS = RECORD
                        NAMA     : ARRAY [1..30] OF STRING [15];
                        ALAMAT : ARRAY [1..30] OF STRING [15];
                        KELAS     : ARRAY [1..30] OF STRING [5];
            END;
VAR    FILEMHS         : FILE OF MHS;
            RECORDMHS : ARRAY [1..50] OF MHS;
            PIL                : CHAR;
LABEL RETURN;
PROCEDURE INPUT_DATA;
    VAR N,I : INTEGER;
    BEGIN
        CLRSCR;
        ASSIGN(FILEMHS,'M_SISWA.DAT');
        REWRITE(FILEMHS);
        WRITE(' BANYAKNYA DATA : ');READLN(N);
        FOR I := 1 TO N DO
        BEGIN
            WITH RECORDMHS[I] DO
                BEGIN
                    WRITELN;
                    WRITELN(' DATA KE-',I);
                    WRITE(' NAMA MAHASISWA : ');READLN(NAMA[I]);
                    WRITE(' ALAMAT                      : ');READLN(ALAMAT[I]);
                    WRITE(' KELAS                          : ');READLN(KELAS[I]);
                END;
            WRITE(FILEMHS,RECORDMHS[I]);
        END;
        CLOSE(FILEMHS);
    END;
PROCEDURE ADD_DATA;
    VAR N,I,X : INTEGER;
    BEGIN
        CLRSCR;
        ASSIGN(FILEMHS,'M_SISWA.DAT');
        RESET(FILEMHS);
    N := FILESIZE(FILEMHS);
        IF IORESULT <> 0 THEN REWRITE(FILEMHS);
        SEEK(FILEMHS,N);
        WRITE(' BANYAKNYA DATA TAMBAHAN = ');READLN(X);
        FOR I := 1 TO X DO
        BEGIN
            WRITELN;
            WRITELN(' BANYAKNYA DATA = ',N);
            N := N + 1;
            WITH RECORDMHS[N] DO
            BEGIN
                WRITELN;
                WRITELN(' DATA KE-',N);
                WRITE(' NAMA MAHASISWA : ');READLN(NAMA[N]);
                WRITE(' ALAMAT         : ');READLN(ALAMAT[N]);
                WRITE(' KELAS          : ');READLN(KELAS[N]);
            END;
            WRITE(FILEMHS,RECORDMHS[N]);
        END;
        CLOSE(FILEMHS);
    END;
PROCEDURE EDIT_DATA;
    VAR    FOUND : BOOLEAN;
            MORE    : CHAR;
            NAME    : STRING[15];
            N,I   : INTEGER;
    BEGIN
        CLRSCR;
        ASSIGN(FILEMHS,'M_SISWA.DAT');
        RESET(FILEMHS);
        N := FILESIZE(FILEMHS);
        MORE := 'Y';
        WHILE UPCASE(MORE) = 'Y' DO
        BEGIN
            FOUND := FALSE;
            WRITE(' NAMA MAHASISWA YANG MAU DI-EDIT DATANYA : ');READLN(NAME);
            FOR I := 1 TO N DO
            BEGIN
                SEEK(FILEMHS,I-1);
                READ(FILEMHS,RECORDMHS[I]);
                IF RECORDMHS[I].NAMA[I] = NAME THEN
                BEGIN
                    FOUND := TRUE;
                    WITH RECORDMHS[I] DO
                    BEGIN
                        WRITELN;
                        WRITELN(' DATA YANG AKAN DIKOREKSI');
                        WRITELN(' NAMA MAHASISWA : ',NAMA[I]);
                        WRITELN(' ALAMAT                      : ',ALAMAT[I]);
                        WRITELN(' KELAS                          : ',KELAS[I]);
                        WRITELN;
                        WRITELN(' DATA KOREKSI');
                        WRITE(' NAMA MAHASISWA : ');READLN(NAMA[I]);
                        WRITE(' ALAMAT                      : ');READLN(ALAMAT[I]);
                        WRITE(' KELAS                          : ');READLN(KELAS[I]);
                        WRITELN;
                    END;
                END;
                SEEK(FILEMHS,I-1);
                WRITE(FILEMHS,RECORDMHS[I]);
            END;
            IF NOT FOUND THEN
            WRITELN(CHAR(7),' DATA TIDAK ADA');
            WRITE(' EDIT DATA LAGI (Y/T) ? ');READLN(MORE);
            WRITELN;
        END;
        CLOSE(FILEMHS);
    END;
PROCEDURE LINES;
    VAR I : INTEGER;
    BEGIN
        FOR I := 1 TO 43 DO
        WRITE('-');
    END;
PROCEDURE VIEW_DATA;
    VAR N,I : INTEGER;
    BEGIN
        CLRSCR;
        ASSIGN(FILEMHS,'M_SISWA.DAT');
        RESET(FILEMHS);
        WHILE NOT EOF(FILEMHS) DO
        BEGIN
            N := FILESIZE(FILEMHS);
            FOR I := 1 TO N DO
            BEGIN
                READ(FILEMHS,RECORDMHS[I]);
                WITH RECORDMHS[I] DO
                BEGIN
                    GOTOXY (35,2);WRITELN('DATA MAHASISWA');
                    GOTOXY (20,4);LINES;
                    GOTOXY (21,5);WRITELN('NO       NAMA           ALAMAT      KELAS');
                    GOTOXY (20,6);LINES;
                    GOTOXY (21,6+I);WRITE(I:2);
                    GOTOXY (25,6+I);WRITE(NAMA[I]);
                    GOTOXY (41,6+I);WRITE(ALAMAT[I]);
                    GOTOXY (57,6+I);WRITELN(KELAS[I]);
                END;
            END;
            GOTOXY (20,7+I);LINES;
        END;
        CLOSE(FILEMHS);
        READLN;
    END;

BEGIN
    REPEAT
        RETURN :
            CLRSCR;
            GOTOXY (28,3);WRITELN('<<< MENU FILE >>>');
            GOTOXY (23,5);WRITELN('1. FILE BARU DAN INPUT DATA');
            GOTOXY (23,6);WRITELN('2. TAMBAH DATA');
            GOTOXY (23,7);WRITELN('3. KOREKSI DATA BERDASAR NAMA');
            GOTOXY (23,8);WRITELN('4. TAMPILKAN DATA');
            GOTOXY (23,9);WRITELN('5. SELESAI');
            GOTOXY (23,11);WRITE('PILIHAN ANDA : ');READLN(PIL);
            IF NOT (PIL IN ['1'..'5']) THEN
            BEGIN
                WRITELN(CHAR(7));
                GOTOXY (23,13);WRITELN('PILIH YANG BENER DONG !!!');
                READLN;
                GOTO RETURN;
            END;
            CASE PIL OF
                '1' : INPUT_DATA;
                '2' : ADD_DATA;
                '3' : EDIT_DATA;
                '4' : VIEW_DATA;
            END;
    UNTIL PIL = '5';
END.

Selasa, 03 April 2012

STACK (TUMPUKAN)

LINIER LIST
Suatu struktur data umum yang berisi suatu kumpulan terurut dari elemen; jumlah elemen di dalam list dapat berubah-ubah.
Linier list A yang terdiri dari T elemen pada waktu t, dinotasikan sebagai : A = [ A1, A2, ..., AT]           
Jika T = 0, maka A disebut “Empty List” atau “Null List”
Suatu elemen dapat dihilangkan/dihapus dari sembarang posisi dalam linier list, dan dapat pula dimasukkan elemen baru sebagai anggota list.
Contoh :
1. File, dengan elemennya berupa record
2. Buku telepon
3. Stack
4. Queue
5. Linear link list

STACK
Stack adalah suatu bentuk khusus dari linier list, dengan operasi penyisipan dan penghapusan dibatasi hanya pada satu sisinya, yaitu puncak stack (TOP).

Elemen teratas dari stack dinotasikan sebagai TOP(S).
Untuk stack S, dengan S = [S1, S2, S3, ..., ST]
maka TOP(S) = ST

Jumlah elemen di dalam stack kita notasikan dengan NOEL(S).
NOEL(S) menghasilkan nilai integer.
Untuk stack S = [S1, S2, S3, ..., ST] maka NOEL (S) = T.

Operator penyisipan (insertion) : PUSH
Operator penghapusan (deletion) : POP
Operasi stack : LIFO (Last In First Out), yaitu : yang terakhir masuk yang pertama keluar.

Jika ada NOEL elemen didalam stack, maka elemen ke NOEL merupakan elemen puncak (TOP).

Stack secara umum :
S = [S1, S2, ..., SNOEL]
bahwa : SI berada di atas elemen SJ, untuk I > J
SI akan dikeluarkan lebih dulu dari elemen di bawahnya.

Contoh stack : Tumpukan baki dalam cafetaria
Empat operasi dasar yang berlaku pada stack :
1. CREATE(stack)
2. ISEMPTY(stack)
3. PUSH(elemen, stack)
4. POP(stack)

·         CREATE
adalah operator yang menunjukkan suatu stack kosong dengan nama S.

Jadi :     NOEL(CREATE(S)) = 0

              TOP(CREATE(S)) adalah TIDAK TERDEFINISI.

·         ISEMPTY
adalah operator yang menentukan apakah stack S kosong.
Operandnya terdiri dari type data stack. Hasilnya merupakan type data Boolean.
ISEMPTY(S) = True. Jika S hampa, yakni bila NOEL(S) = 0.

·         PUSH
adalah operator yang menambahkan elemen E pada puncak stack S. Hasilnya merupakan stack yang lebih besar.
PUSH(E,S). E ditempatkan sebagai TOP(S).

·         POP(stack)
adalah operator yang menghapus sebuah elemen dari puncak stack S. Hasilnya merupakan stack yang lebih kecil.
·         POP(S)  mengurangi NOEL(S)
·         POP(CREATE(S))   ®  kondisi error
·         POP(PUSH(E,S)) = S

DEKLARASI STACK DALAM COBOL DAN PASCAL

TOP-PTR
 
® 100                   S                Keterangan :
                   ·  
                  ·                STACK S
                  ·       TOP-PTR : subskrip dari elemen TOP(S) dari stack.
         1         
 

COBOL

01     STACK-STRUCT   ® kombinasi dari array dan indikator untuk TOP
         02        S OCCURS 100 TIMES PIC 9(5)
         02        TOP-PTR                       PIC 9(3)

 

PASCAL

TYPE STACKSTRUCT   =               RECORD
                                                            STACK : ARRAY [1..100] of integer;
                                                            TOPPTR : integer;
                                                            END;

VAR  S :  STACKSTRUCT;
NOEL(S) = TOP-PTR, ISEMPTY(S) = true, bila TOP-PTR = 0.

OPERASI PUSH & POP

PUSH

         IF TOP-PTR < NOEL-MAX
                     THEN COMPUTE TOP-PTR = TOP-PTR + 1
                                   MOVE EON  TO S(TOP-PTR)
                     ELSE Overflow condition

POP
         IF TOP-PTR > 0
                     THEN MOVE S(TOP-PTR) TO EOFF
                                   COMPUTE TOP-PTR = TOP-PTR  -  1
                     ELSE Underflow condition

EON : elemen yang di PUSH ke dalam S.
EOFF : elemen yang di POP ke luar S.
NOEL-MAX : panjang max stack.

 

PUSH

         Procedure PUSH (eon: integer);
         Begin
               if (s.topptr < noelmax)
               then
                        Begin
                              s.topptr := s.topptr + 1;
                              s.stack [s.topptr] := eon;
                        End;
               else Overflow-condition
         End;

POP

         Procedure POP (var eoff : integer);
         Begin
               if (s.topptr > 0)
               then
                        Begin
                              eoff := s.stack [s.topptr];
                              s.topptr := s.topptr - 1;
                        End;
               else Underflow Condition
         End;

APLIKASI STACK
 1.      Penjodohan Tanda Kurung/Matching Parantheses
         ALGORITMA
         a.   Amati barisan elemen dari kiri ke kanan
         b.   ·    bila bertemu ‘(‘, maka ‘(‘ di push ke dalam stack.
               ·    bila bertemu ‘)’, maka periksa stack hampa atau tidak.
                     bila hampa ® ada ‘)’ dan tidak ada ‘(‘ (error)
bila tidak hampa ® ada sepasang ‘(‘ & ‘)’ & POP elemen     keluar
 2.      NOTASI POSTFIX
         ALGORITMA
         Amati barisan dari kiri ke kanan
         1.   Jika ‘(‘, maka PUSH ke dalam stack.
         2.   Jika ‘)’, POP elemen dalam stack sampai simbol ‘(‘. Semua di POP merupakan  output kecuali ‘(‘ tadi.
         3.   Jika simbol operand, langsung merupakan output.
         4.   Jika simbol operator, maka :
Jika elemen TOP stack dengan level >= maka POP sebagai output teruskan sampai ‘(‘.
elemen TOP <, operator yang diamati di PUSH ke dalam stack.
         5.   Bila ‘;’ kita POP semua elemen dalam stack hingga hampa.

APLIKASI STACK
Notasi Postfix
Contoh :
Notasi Infix : ((A+B) * C/D+E^F)/G;

Simbol yang diamati
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(
(
A
+
B
)
*
C
/
D
+
E
^
F
)
/
G
;
TOP dari
STACK


(

(
(

(
(
+
(
(
+
(
(


(

*
(

*
(

/
(

/
(

+
(

+
(
^
+
(
^
+
(



/


/

OUTPUT


A

B
+

C
*
D
/
E

F
^+

G
/

Soal :
1.      A * B - (C + D) -(E - F) + F/H ^ I;
2.      ((B * C) + C/D ^ F) + G;
3.      A ^ B * C - D + E/F / (G + H);


Sumber : 
http://oktaviani.staff.gunadarma.ac.id/Downloads