Laman

Senin, 16 Maret 2015

Praktikum Algoritma dan Pemrograman 1, Farhah, 12110612, 1KA31 (QBASIC)

Kode Mata Kuliah : IT011119
PTA 2010/2011
1 SKS



QBasic 

merupakan persekitaran pembangunan bersepadu - (integrated development environment - IDE) dan bahasa diterjemah bagi variasi bagi bahasa pengaturcaraan BASIC yang berasaskan kepada bahasa pengaturcaraan QuickBasic. Kod yang dimasukkan ke dalam persekitaran pembangunan bersepadu IDE di kompil kepada bentuk perantaraan, dan bentuk perantaraan ini diterjemah menurut permintaan dalam IDE.

Sebagaimana QuickBASIC, tetapi tidak seperti versi Microsoft BASIC lebih awal, QBasic merupakan bahasa pengaturcaraan berstruktur, menyokong pembentukan seperti subrutin dan gelung while. Nombor baris, konsep yang seringkali dikaitkan dengan BASIC, disokong bagi keserasian, tetapi tidak dianggap bentuk yang baik, telah diganti dengan label baris gambaran. QBasic mempunyai sokongan terhad bagi jenis struktur data ditetapkan pengguna, dan beberapa jenis primitif digunakan bagi menyimpan rentetan teks dan data nombor.
QBasic dicadangkan sebagai menggantikan GW-BASIC. Version 1.0 diedar bersama MS-DOS 5.0 dan berikutnya, termasuk Windows 95, Windows NT 3.x, dan Windows NT 4.0.IBM menkompil semula QBasic dan memasukkannya kedalam PCDOS 5.x, dan juga OS/2 2.0 berikutnya. eComStation, hasil dari kod OS/2, disertakan bersama QBasic 1.0. QBasic 1.1 disertakan bersama dengan MS-DOS 6.x, dan, tanpa EDIT, dalam Windows 95, dan Windows 98. Bermula dengan Windows 2000, Microsoft tidak lagi menyertakan QBasic bersama sistem pengoperasian mereka.
Ia diasaskan pada kompiler 4.5 QuickBASIC lebih awal tetapi tanpa kompiler QuickBASIC dan penyambung unsur (linker elements). Sehingga MS-DOS 7, penyunting MS-DOS memerlukan QBasic. Aturcara "edit.com" hanya memulakan QBasic dalam mod sunting saja.
Sungguhpun QBasic (bersama dengan Penyunting MS-DOS dalaman) mula diperkenalkan sebagai sebahagian dari Paket MS-DOS 5.0, ia tidak bergantung khusus kepada MS-DOS 5.0 untuk dilaksanakan. QBASIC (dan Penyunting) boleh digunakan bersama versi DOS sebelumnya, sehingga sekurang-kurangnya versi 3.20. Tetapi, ingatan mencukupi dan CPU yang agak pantas masih diperlukan, sekiranya tidak aturcara dilaksanakan dengan amat perlahan.
Pada masanya, QBasic memberikan IDE terkini (state-of-the-art) termasuk debugger dengan ciri-ciri seperti penilaian secara langsung (on-the-fly) dan penukaran kod yang masih luar biasa lebih sepuluh tahun berikutnya.
QBasic boleh dilaksanakan secara tempatan dengan menggunakan hampir kesemua versi DOS dan Windows, dan dengan menggunakan emulator DOSBox percuma, ia dapat dilaksanakan pada pelantar seperti Linux dan FreeBSD.
QBasic disertakan bersama dengan beberapa aturcara contoh siap tulis. Ia termasuk permainan komputer Nibbles (variasi [[permainan video Snake), permainan komputer Gorillas, permainan melontar pisang meletup dihasilkan dari Permainan Artillery pertama kali dihasilkan pada Tektronix 4051 dan kemudiannya HP 2640 HP 2647 dan RemLine, kod GW-BASIC aturcara penghapus nombor baris.[1]

Statement Kondisi dan Perulangan dalam Qbasic


1.Pengertian Statement Kondisi dan Perulangan
Kondisi dalam bahasa pemrograman QBasic

Laporan yang berulang, sementara kondisi benar. Ketika kondisi salah komputer melompat ke laporan setelah LOOP. Jika kondisi salah di awal, maka laporan tersebut tidak dilaksanakan.

Perulangan dalam bahasa pemrograman QBasic

merupakan suatu kondisi yang memenuhi untuk melakukan perulangan statement tertentu sampai kondisi tersebut tidak terpenuhi sehingga perulangan dihentikan.

2. Bentuk Umum
Bentuk Umum Statement Perulangan :

1. FOR … NEXT
            Digunakan untuk mengontrol jalannya perulangan pada program, dimana statement tersebut akan mengalami perulangan selama kondisi atau pernyataan masih memenuhi syarat.
           
3. While…do
            Perintah yang berjalan bila di dalam loop ada nilai yang mengontrol loop dan nilainya terus berubah sehingga akhir program akan kluar dari loop

4. Repeat.. until
            Pernyataan repeat akan menghasilnkan paling sedikit 1 x eksekusi statement

5. Goto
            Instruksi yang mentransfer program ke lokasi lain yang dinyatakan dengan label.

Bentuk Umum  Kondisi :

Kondisi dapat mengambil bentuk sebagai berikut:
X <Y
X kurang dari Y.
X <= Y
X kurang dari atau sama dengan Y.
X = Y
sama dengan Y. X
X> = Y
X lebih besar dari atau sama dengan Y.
X> Y
X lebih besar daripada Y.
X <> Y
X tidak sama dengan Y.[2]

FLOWCHART/ DIAGRAM ALUR


































CODING PROGRAM 

CLS
PRINT "MENU"
PRINT "......................................"
PRINT " 1. BIODATA"
PRINT " 2. LUAS SEGITIGA"
PRINT " 3. DERET"
PRINT " 4. EXIT"
PRINT "......................................."
INPUT "MASUKKAN PILIHAN :",  PIL
IF (PIL = 1) THEN GOTO 10
IF (PIL = 2) THEN GOTO 20
IF (PIL = 3) THEN GOTO 30
GOTO 40
10 PRINT "BIODATA"
GOTO 40
20 PRINT "LUAS SEGITIGA"
GOTO 40
30 PRINT "DERET"
INPUT "MASUKKAN JUMLAH DERET :", N
FOR 1 = 1 TO N
FOR J = 1 TO N
PRINT J
PRINT
NEXT 1
GOTO 40
40 END

Maka Outputnya adalah :
1. BIODATA
2. LUAS SEGITIGA
3. DERET
4. EXIT
MASUKKAN PILIHAN :
3
MASUKKAN JUMLAH DERET :
5

OUTPUT
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5



Sumber Informasi :







Minggu, 15 Maret 2015

Algoritma dan Pemrograman 1 (*), Farhah, 12110612, 1KA31 (Diagram Alur)

Kode Mata Kuliah : IT011302
PTA 2010/2011

Diagram Alur (Flowchart)

Flowchart : Logika/ Urutan-urutan instruksi program tersebut dalam suatu diagram. 

Suatu program komputer pada umumnya berisi 3 hal, yaitu :
1) Pembacaan/ pemasukan data ke dalam komputer.
2) Melakukan komputasi/ perhitungan terhadap data tersebut.
3) Mengeluarkan/ mencetak hasilnya.

Simbol dan Kotak Diagram Alur




























Alih Kontrol
Percabangan :  terjadi apabila dihadapkan pada kondisi dengan dua pilihan : BENAR atau SALAH.

Contoh :

     Dalam diagram alur diatas digunakan kotak keputusan.
     Kondisi : Apabila A > B, kondisi benar, arus mengikuti alur (1) sedangkan bila kondisi salah (A≤B) maka alur (2).

Pemutaran Kembali ( Looping )
Terjadi ketika mengalihkan arus diagram alur kembali ke atas sehingga beberapa alur berulang kembali.

Contoh : 


Keterangan :
1) Variabel A dberi harga 1
2) Variabel A berubah harganya menjadi 2
3) Variabel B diberi harga sebesar harga A DIKALIKAN HARGA A. Jadi variabel B berharga 4.
4) Harga B dicetak (jadi tercetak 4)
    Kemudian kembali ke (2),(3),(4) dan kembali lagi ke (2) dan seterusnya.
    Jadi, yang akan tercetak adalah harga-harga 4,9,16,.. (tidak berhenti-henti).

Cara lain untuk melakukan pemutaran kembali (looping) adalah menggunakan bentuk untuk---selanjutnya. 
hal ini sangat baik apabila banyak kali putaran diketahui.

Suatu putaran kembali (looping) dalam diagram alur akan dibahas oleh kotak --- UNTUK --- LANGKAH (FOR---TO---STEP) dan kotak SELANJUTNYA (NEXT).

Contoh :


Catatan: Garis sejajar untuk menentukkan pemutaran untuk-selanjutnya

Keterangan gambar :
Kotak UNTUK - SAMPAI - LANGKAH menerangkan berapa kali putaran akan dilakukan.
UNTUK N = 1 berarti pemutaran dimulai dengan keadaan variabel N berharga = 1.
SAMPAI 4 berarti pemutaran diakhiri begitu harga variabel N lebih besar 4
LANGKAH 1 berarti harga variabel N meningkat dengan 1 setiap menyelesaikan satu putaran (atau begitu sampai di kotak).
N SELANJUTNYA Variabel N disebut variabel kontrol dari pemutaran, yang dikerjakan dalam setiap putaran adalah instruksi-instruksi pada kotak diagram alur antara ke 2 kotak bahas UNTUK - SAMPAI - LANGKAH dan SELANJUTNYA.

Diagram Alur Untuk Proses Pembuatan Laporan Sederhana
Salah satu penggunaan komputer adalah sebagai alat bantu dalam pelaksanaan administrasi di kantor-kantor. Misalnya dapat dibuat laporan kehadiran pegawai dalam satu bulan, daftar gaji pegawai, laporan keuangan perusahaan, dsb.

Organisasi Data
Data terdiri dari kumpulan simbol yang mempunyai arti tersendiri/ tertentu.  Simbol ini terdiri dari angka, huruf dan simbol khusus (spesial).

FIELD / VARIABEL : kumpulan dari karakter yang membentuk suatu unit tertentu dan mempunyai arti tertentu.
Contoh Field : - NAMA PEGAWAI
                           - LUAS SEGITIGA
                           - ALAMAT

RECORD : kumpulan dari field yang terbentuk satu unit lengkap yang mempunyai hubungan satu sama lainnya.
Contoh Record : RECORD NAMA PEGAWAI terdiri atas :
                               - NAMA PEGAWAI
                               - DEPARTEMEN
                               - GOLONGAN
                               - TAHUN MASUK
                               - GAJI POKOK

BERKAS (FILE) : Kumpulan dari record-record yang sejenis.
Contoh File : Berkas KEPEGAWAIAN

Contoh Soal "Diagram Alur Pembuatan Daftar Upah Mingguan Pekerja"

 Upah Mingguan Pekerja.
* Ketentuan :
1) Upah standar harian Rp. 2.500,00 sehari/8 jam kerja.
2) Upah lembur Rp. 500,000 per jam kerja.
3) Satu minggu adalah 6 hari kerja.
4) Bagi pekerja yang seminggu bekerja lebih dari :
     a) 65 jam diberi premi ekstra      Rp. 2500,00
     b) 80 jam diberi premi ekstra      Rp. 4000,00
     c) 100 jam diberi premi ekstra    Rp. 6000,00
5) Bagi pekerja yang dalam seminggu bekerja kurang dari 48 jam, upahnya dihitung upah standar Rp. 312,50 per jam.

* masukan berapa record berisi Nama Pekerja (N$) dan Jumlah Jam Kerja (J)
akan dibuat diagram alur pembuatan daftar upah mingguan pekerja-pekerja tersebut.




Sumber Informasi :

1. Suryadi, H.S. Sumin, Agus. 1997. Pengantar Algoritma dan Pemrograman. Jakarta: Gunadarma.

Algoritma dan Pemrograman 1 (*), Farhah, 12110612, 1KA31 (Logic & Functional Programming)

Kode Mata Kuliah : IT011302
PTA 2010/2011

Logic Programming

Prolog (PROgramming in LOGic) : pemrograman logika. Menggunakan bahasa deklaratif, dimana programmer memberi fakta dan aturan untuk selanjutnya diselesaikan oleh Prolog secara deduktif sehingga menghasilkan suatu kesimpulan. 

Logika Predikat : bagian dari komputasi logika yang juga mencakup aljabar Boole (logika proposisional), dimana fakta fan aturan dinyatakan melalui predikat. 

Bahasa Deklaratif : pokok perbedaaan Prolog dari bahasa lain adalah karena bersifat deskriptif atau deklaratif, sedangkan bahasa lain umumnya bersifat prosedural atau imperatif. 

Dasar Pemrograman Prolog 
1. Fakta : Suatu kenyataan atau kebenaran yang diketahui, dan menyatakan hubungan (relasi) antara dua atau lebih objek. Fakta dapat pula menunjukkan sifat suatu objek. 
2. Aturan : logika yang dirumuskan dalam bentuk relasi sebab-akibat dan hubungan implikasi.
3. Klausa (Clause) : suatu frase (ungkapan)


                                                       Functional Programming

Bahasa Pemrograman Fungsional : disebut aplikatif karena fungsi yang diaplikasikan ke dalam argumentasi menjadi deklaratif dan non prosedural.

3 Komponen Primer Bahasa Functional :
1. Kumpulan objek data : menggunakan mekanisme struktur data tingkat tinggi
2. Kumpulan fungsi built-in : memanipulasi objek data dasar yang menyediakan sejumlah fungsi untuk membuat dan mengakses list.
3. Kumpulan functional forms : membuat fungsi baru, yang mengizinkan programmer mendefinisikan operasi baru dari kombinasi fungsi yang ada. 

ML (Meta Language) : bahasa aplikatif dengan program-program yang ditulis menggunakan gaya C atau Pascal dan dengan konsep yang lebih advance tentang tipe data, mendukung polymorphisme dan abstraksi data, dan berjalan dengan interpreter.

Lambda Calculus : 
1. Bahasa sederhana dengan ilmu semantik sederhana, ekspresif yang menyatakan semua fungsi dapat diperhitungkan.
2. Merupakan suatu bentuk formal dengan fungsi sebagai aturan

3 Elemen Lambda Calculus murni :
1. Lambang primitif
2. Aplikasi fungsi
3. Fungsi ciptaan

Ilmu Semantik Operasional :  terjemahan dari program konvensional kedalam persamaan fungsional. 

Tujuan denotasional semantik : menugaskan suatu nilai kepada setiap ekspresi dalam bahasa. 

Fungsi Rekursif : Perluasan Syntax Lambda-calculus yang mencakup ekspresi yang telah dinamai. 

Scheme :
1. Turunan dari LISP, didasarkan pada Lambda Calculus. Dikonsentrasikan ke fitur lambda-calculus
2. Scheme mempunyai dua objek :
    - Atoms : untaian karakter bukan blank
    - List : Rangkaian Atom atau List dipisahkan oleh blank dan berada dalam tanda
3. Sebuah fungsi dapat terbuat dari atas fungsi yang lain dan dapat diaplikasikan pada list atau argumen.

Haskell 
Pembentukkan bahasa functional yang memasukkan :
1. Ide-ide baik yang sebelumnya ada dalam riset bahasa fungsional
2. Yang sesuai untuk pengajaran, riset dan aplikasi
3. Fasilitas Overloading, yang dipadukan dengan sistem bertipe polimorfis, i/o fungsional, abstraksi data dan penyembunyian informasi

Functional Programming urutan mesin virtual :
- Bahasa pemrograman fungsional -> lambda calculus
- Lambda Calculus -> logika kombinatorial
- Logika kombinatorial -> kode mesin reduksi graf.



Algoritma dan Pemrograman 1 (*), Farhah, 12110612, 1KA31 (Pemrograman Imperatif)

Kode Mata Kuliah : IT011302
PTA 2010/2011

Pemrograman Imperatif

Pemrograman Imperatif :  paradigma pemrograman yang mempunyai karakteristik berupa status dan instruksi/ perintah untuk mengubah status program. 

Ciri-ciri pemrograman imperatif adalah :
1. Adanya instruksi/ perintah/ command 
    contoh : GOTO 10
2. Adanya status yang berubah
    contoh : Dengan adanya perintah GOTO 10 maka status program akan loncat mengerjakan statement yang ada pada line number 10.

Statement/ Perintah tidak terstruktur : statement yang berisi perintah untuk mengerjakan statement tertentu yang diidentifikasikan dengan suatu label, baik menggunakan statement GOTO bersyarat maupun tanpa syarat.
Contoh : Program yang mengandung perintah tidak terstruktur (bahasa BASIC)
10 LET A = 5
20 LET B = A + 1
30 GOTO 50
40 LET B = A * 2
50 PRINT B
60 END

Pemrograman Terstruktur : suatu teknik yang memecah masalah besar menjadi lebih kecil dan lebih mudah dipahami sehingga masalah yang besar dapat diselesaikan dengan baik.
Contoh : Pascal, Cobol, Bahasa C.

Sttuktur Kontrol : struktur yang mengendalikan statement/ instruksi apa saja yang harus dikerjakan.

Tiga Struktur Kontrol pada program imperatif :
1. Komposisi Sekuensial : digunakan lebih dari sebuah statement yang harus dikerjakan secara berurutan yang dipisahkan dengan menggunakan simbol/ tanda khusus tertentu. misalnya titik koma (;) dalam Pascal.
Contoh : Read(N); Write(N);
2. Seleksi : statement penyeleksian kondisi menunjukkan bahwa suatu statement akan dikerjakan bila suatu kondisi adalah bernilai benar.
Contoh : Statement penyeleksian kondisi : IF-THEN, CASE OF (Bahasa Pascal)
3. Iterasi : Statement iterasi (perulangan) digunakan untuk memproses statement-statement tertentu berulang kali.
Contoh : Statement Iterasi : WHILE-DO, REPEAT-UNTIL, FOR-DO (Bahasa Pascal)

Subprogram, Prosedur dan Fungsi
Subprogram : blok statement yang dapat dipanggil dari lokasi yang berbeda didalam program.
Prosedur dan Fungsi : suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian).

Yang membedakan antara Fungsi dan Prosedur yaitu :
1. Fungsi harus dideklarasikan dengan tipenya
2. Suatu Fungsi jika dijalankan / dipanggil akan mengembalikan suatu nilai

Penanganan Eksepsi 

Eksepsi :  suatu konstruksi suatu bahasa khusus untuk menangani keadaan yang tidak terduga (biasanya adalah error); status keadaan error selama program berjalan, dapat terjadi sesuatu hal yang menyebabkan error.

Contoh 

Penggunaan Eksepsi pada Program bahasa C++

#include <iostream>
using namespace std;
int main()
{
  try 
       {
          cout<<"Masukkan angka :";
          int num; cin >> num;
          if  (num>10) throw std : : exception ();
          cout<<"Angka kurang dari atau sama dengan 10"<<endl;
        }
        Catch (std : : exception& S)
        {
            cout<<"Angka lebih dari 10"<<endl;
         }
  return 0;
}

Algoritma dan Pemrograman 1 (*), Farhah, 12110612, 1KA31 (Power Domain (Daerah Tenaga) )

Kode Mata Kuliah : IT011302
PTA 2010/2011

Power Domain (Daerah Tenaga)


Sistem Jenis : satu set aturan untuk penjelasan jenis dan menghubungkan suatu jenis dengan ungkapan didalam bahasa. 

Jenis Pemeriksaan 
Suatu bahasa disebut :
1. Tidak berjenis jika tidak ada jenis abstrak yang berlaku
2. Jenis kuat jika menyelenggarakan jenis abstrak (operasi mungkin diterapkan hanya untuk objek jenis yang sesuai)
3. Jenis statis jika jenis diungkapkan masing-masing dapat ditentukkan dari teks program
4. Jenis dinamis jika penentuan jenis beberapa ungkapan tergantung pada perilaku waktu berjalan program.

Jenis Kesamaan
Dua jenis tak dikenal (satuan objek) adalah sama jika mereka berisi unsur-unsur yang sama. 

Kesamaan Nama
Didalam kesamaan nama dua jenis adalah sama jika mereka mempunyai nama yang sama.

Kesamaan Struktural
Didalam kesamaan struktural, nama jenis diabaikan dan unsur-unsur jenis dibandingkan untuk persamaan. 

3 aturan yang digunkan untuk menentukkan jika dua jenis adalah kesamaan struktural :
1. Suatu nama jenis sama secara terstruktur dengan dirinya sendiri
2. Dua jenis yang sama secara terstruktur jika mereka dibentuk dengan menerapkan jenis pembangun yang sama (secara berulang) ke jenis kesamaan secara struktural.
3. Setelah suatu deklarasi jenis, jenis n=T, nama jenis n secara struktural setara dengan T. 

Jenis Kesimpulan : masalah yang umum dalam menjelmakan tak berjenis atau sintaksis jenis parsial ke dalam terminologi yang baik. 

Suatu pemeriksa jenis harus mampu :
1. menentukkan jika suatu program adalah jenis yang baik
2. jika program adalah jenis yang baik, tentukkan jenis ungkapan maupun di dalam program.

Polymorphisme : suatu operator, fungsi atau prosedur yang mempunyai suatu keluarga jenis yang terkait dan beroperasi secara seragam atas argumentasinya dengan mengabaikan jenis.

Monomorphisme : Tiap-tiap konstanta, variabel, parameter, fungsi dan operator mempunyai suatu jenis unik.

Pemuatan  : lebih mengacu pada penggunaan dari sintaksis tunggal pengenal untuk mengacu pada beberapa operasi berbeda yang dibedakan oleh jenis dan jumlah argumentasi pada operasi.

Suatu operasi polymorphic : yang dapat berlaku untuk jenis yang berbeda tetapi berhubungan dengan argumentasi.

Prinsip Jenis Kelengkapan : tidak ada operasi yang dapat berlaku semaunya terbatas yang berhubungan dengan nilai jenis. 








Algoritma dan Pemrograman 1 (*), Farhah, 12110612, 1KA31 (Abstraksi dan Generalisasi)

Kode Mata Kuliah : IT011302
PTA 2010/2011

ABSTRAKSI DAN GENERALISASI

Abstraksi :  deskripsi dari suatu masalah pada level generalisasi tertentu, sehingga memungkinkan kita untuk berkonsentrasi pada aspek kunci dari masalah tersebut tanpa memperhatikan hal-hal detail. 
Contoh : 
Monitoring : berbagai macam sistem monitoring
Ban sepeda : sepeda balap, sepeda gunung
Mobil : sedan, jeep, wagon, truk

Tingkatan Abstraksi :
1. Abstraksi Fungsional
2. Abstraksi Data
3. Abstraksi Cluster
4. Abstraksi Sistem
5. Pengelompokkan kasual

Generalisasi : perluasan suatu aplikasi yang meliputi suatun daerah object yang lebih besar dengan jenis yang berbeda atau jenis yang sama. 
- Attribute : nilai internal atau data terkait pada suatu objek yang menunjukkan ciri-ciri atau sifat-sifat dari objek serta penggambaran keadaan (state) objek. 
- Binding : Pengaturan nilai attribute
- Descriptor : informasi attribute yang diisikan dalam tempat penyimpanan untuk setiap entitas. 

Bahasa Pemrograman berbeda satu dengan yang lainnya karena :
1. Perbedaan jumlah entitas yang dapat ditangani
2. Jumlah atribut yang dapat ditempelkan ke entitas yang dapat ditangani
3. Waktu kemunculan binding (binding time)
4. Stabilitas binding ( binding yang sudah terbentuk bersifat tetap atau dapat dimodifikasi)

Jenis Binding :
1. Simple Binding
2. Complex Binding

Jika dilihat dari sisi waktu pengikatan data (binding) bisa dibedakan lagi menjadi dua jenis : 
1. Early Binding
2. Late Binding

Contoh Binding : 
1. Language definition time binding
2. Language implementation time binding
3. Compile-time (translation-time) binding
4. Execution-time (Run-time) binding

Enkapsulasi : 
1. Pengkapsulan berarti mengemas beberapa item bersama-sama menjadi satu unit yang tertutup dalam rangka menyembunyikan struktur internal suatu objek dari lingkungan/ dunia luar.
2. Pengkapsulan sering dianggap sebagai "penyembunyian informasi"
3. Setiap kelas hanya menampakkan interface yang diperlukan untuk berkomunikasi dengan dunia luar melalui message dan menyembunyikan (encapsulating)/ implementasi aktual di dalam kelas. 
4. kita hanya membutuhkan pemahaman tentang interface (methode), tidak perlu paham tentang internalnya (implementation)
5. Pengapsulan merupakan kemampuan sebagai objek kelas untuk membatasi akses client ke representasi internal objek (data dan fungsi).

Prinsip Generalisasi
1. Prinsip Analogi :  ketika suatu penyesuaian pada pola di antara 2 objek yang berbeda dimana objek dapat digantikan dengan objek tunggal yang parameterized untuk melakukan rekonstruksi yang menyangkut objek asli. 
2. Prinsip Parameterisasi : suatu parameter yang secara umum mungkin berasal dari beberapa domain. 

Substitusi : kegunaan abstraksi dan generalisasi tergantung pada substitusi. 

Prinsip Korespondensi :  suatu formalitas yang menyangkut aspek/pengarahan prinsip abstrak yang mengandung substitusi dan definisi saling terkait. 

Struktur Block
1. Block merupakan suatu bagian dari scope-defining bahasa pemrograman. 
2. Block merupakan urutan dari statemen yang executable yang diperlukan sebagai suatu unit Block disebut subprogram atau routine dikebanyakan bahasa pemrograman. 

Struktur Blok dari suatu Bahasa Pemrograman

Aturan Cakupan
1. Dinamic Scope : suatu subprogram yang didefinisikan di suatu tempat dalam suatu program dan dapat dipanggil dari lingkungan yang berbeda. (lingkungan dimana subprogram tersebut tidak didefinisikan)
2. Static Scope : Subprogram dipanggil dari lingkungan tempat subprogram tersebut didefinisikan. 

Algoritma dan Pemrograman 1 (*), Farhah, 12110612, 1KA31 (BAB 2)

Kode Mata Kuliah : IT011302
PTA 2010/2011

Bab 2
Sintaksis

Bahasa Mesin  adalah bentuk terendah pada komputer/ jenis komputer yang digunakan. 

Penerjemah Bahasa Mesin agar mesin (komputer) dapat dimengerti apa yang diinginkan oleh manusia yaitu :
1. Interpreter
2. Compiler.
    Contoh : Cobol, Pascal, Fortran, dll.

Sintaks : kumpulan aturan yang mendefinisikan suatu bentuk bahasa. 

Sintaks dari bahasa pemrograman didefinisikan dengan dua kumpulan aturan, yaitu :
1. Aturan Lexical (Scanner) 
     Tugas-tugas Aturan Lexical atau Lexical Analysis secara detail adalah :
     a) mengidentifikasi semua besaran yang membangun suatu bahasa
     b) mentransformasikan ke token-token (simbol terminal dari teori bahasa automata)
     c) menentukkan jenis dari token-token
     d) menangani tabel simbol
     e) scanner di desain untuk mengenali keyword, operator, identifier
     
2. Aturan Sintaksis (Parser)
     Tugas-tugas Syntax Analyzer (Parser) :
     a) bertugas memeriksa kebenaran dan urutan dari token-token yang terbentuk oleh Lexical Analysis.
     b) pengelompokkan token-token kedalam class syntax (bentuk sintaks), seperti prosedur, statement dan expression.
     c) grammar dipakai oleh syntax analyzer untuk menentukkan struktur dari program sumber.
    d) proses pendeteksian (pengenalan token) disebut dengan parsing, maka syntax analyzer sering disebut dengan parser
    e) pohon sintaks yang dihasilkan digunakan semantic analyzer yang bertugas untuk menentukkan maksud dari  program sumber. misalnya operator penjumlahan maka semantic analyzer akan mengambil aksi apa yang harus dilakukan. 

Parsing atau Proses Penurunan
Parsing : berasal dari sebuah kalimat adalah konstruksi atau pembentukkan pohon sintaks untuk kalimat tersebut. 

Parsing dapat dilakukan dengan cara :
1. Penurunan Terkiri (leftmost derivation) : simbol variabel yang paling kiri diturunkan (tuntas) dahulu.
2. Penurunan Terkanan (rightmost derivation) : simbol yang paling kanan diturunkan (tuntas) dahulu. 

Konsep dan Notasi Bahasa
- Alfabet : himpunan hingga yang tidak kosong (hampa) dari symbol. 
- Bahasa : himpunan hingga ataupun tak hingga dari kalimat atau kumpulan kalimat. 
- Tata Bahasa / Grammar : sekumpulan dari himpunan variabel-variabel, symbol-symbol terminal, symbol non terminal, symbol awal yang dibatasi oleh aturan-aturan produksi.
- Tahun 1956-1959 : Noam Chomsky melakukan penggolongan tingkatan dalam bahaasa, yaitu menjadi empat class yang disebut dengan Hierarki Chomsky.

Hierarki Chomsky 
1) Unrestricted Grammar (UG) 
     Ciri-ciri : Tipe 0 / Unrestricted : tidak ada batasan pada aturan produksi
                       Abc -> De

2) Context Sensitive Grammar (CSG)
     Ciri-ciri : Tipe 1 / Context Sensitive : panjang string ruas kiri harus < (lebih kecil) atau = (sama dengan) ruas kanan.
                       Ab -> DeF
                       CD -> eF

3) Context Free Grammar (CFG)
     Ciri-ciri : Tipe 2 / Context Free : ruas kiri haruslah tepat satu symbol variabel, yaitu simbol non terminal.
                       B -> CDeFg
                       D -> BcDe

4) Regular Grammar (RG)
     
Ciri-ciri : Tipe 3 / Regular : ruas kanan hanya memiliki maksimal satu symbol non terminal dan diletakkan paling kanan.
     
                       A -> e
                       A -> efg
                       A -> efgH
                       C -> D

Aturan Produksi :
1. Dinyatakan dalam bentuk α -> β, α menghasilkan atau menurunkan β.
2. Simbol α untuk ruas kiri, sedangkan simbol β untuk ruas kanan. 
3. Simbol-simbol dapat berupa terminal dan non terminal dimana non terminal dapat diturunkan menjadi simbol yang lainnya.
4. Umumnya, simbol terminal disimbolkan dengan huruf kecil (a,b,c, dsb) sedangkan untuk simbol non terminal dengan huruf besar (A,B,C, dsb).
5. Contoh aturan produksi :
    T -> a, T menghasilkan a
    E -> T | T + E, E menghasilkan T atau E menghasilkan T + E.

Derifasi : Proses pembentukkan kalimat di grammar. 
Contoh : Derifasi untuk aaabaaa, adalah :
                 S -> aCa
                    -> aaCaa
                    -> aaaCaaa
                    ->aaabaaa