Wonderwall

Just another Binusian blog site

Bab 2, Names, Bindings and Scopes

December14

Variable dapat di karakteristikkan dengan kumpulan properties, atau attribute, dan yang paling penting adalah tipe dari konsep bahasa pemrograman nya. Names adalah sebuah string karakter yang digunakan untuk mengidentifikasi  beberapa entity dalam sebuah program.

  • Nama variable tidak boleh menggunakan karakter-karakter yang merupakan simbol (@,?,#,!,dll), meskipun karakter tersebut terletak di tengah atau di belakang nama variable.
    • Contoh:
    • int #5 ; /*SALAH, karena mengandung tanda #*/
    • int 6@ ; /*SALAH, karena mengandung tanda @*/
    • int tu?juh; /*SALAH, karena mengandung tanda ?*/
  • Nama variable tidak boleh berupa angka ataupun diawali oleh karakter yang berupa angka.
    • contoh:
    • int 234 ; /*SALAH,karena nama variable berupa angka*/
    • int 3Dimensi ; /*SALAH, karena nama variable diawali oleh angka*/
    • int S1 ; /*BENAR, karena nama variable diawali oleh huruf*/
  • Nama variable tidak boleh mengandung spasi
    • contoh:
    • float Bilangan Riil ; /*SALAH, karena mengandung spasi*/
    • float BilanganRiil ; /*BENAR*/
    • float _BilanganRiil; /*BENAR*/
    • float Bilangan_Riil; /*BENAR*/
  • Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.
  • Memberi nama variable sedeskriptif mungkin sehingga program akan mudah untuk dibaca dan dimengerti oleh orang lain.
    • Contoh:
    • Apabila kita akan mendeklarasikan variable untuk menyimpan nilai dan luas lingkaran, maka kita akan dapat memberinya nama luas, L, Luas Lingkaran atau yang lainnya

 Bahasa C merupakan bahasa yang bersifat case-sensitive (membedakan penulisan huruf kecil dan huruf huruf besar) sehingga nama variable pada saat dideklarasikan dan digunakan, penulisannya harus sama.

  • contoh:
    • Dalam bahasa C, variable a dan A akan dianggap sebagai dua buah varibel yang berbeda.

Special Words

Special words dalam bahasa pemrograman digunakan untuk membuat program lebih dapat dibaca dengan menamai aksi yang akan dilaksanakan. Digunakan juga untuk memisahkan antara statement dan program. Keyword adalah kata dalam sebuah bahasa pemrograman yang special dan berada pada context tertentu saja. Reserved word adalah special kata dari sebuah bahasa pemrograman yang tidak dapat digunakan sebagai nama. Dalam reserved word ada problema sebagai contoh:

Integer Real

Real Integer

Statement diatas mendeklarasikan program variable real itu adalah tipe integer dan variable integer itu adalah tipe real

Variable

Variable adalah abstraksi dari memory cell computer atau kumpulan cell.

Variable attribute terdiri dari :

  • Name = nama dari sebuah variable, hamper setiap variable memiliki nama.
  • Address = address dari sebuah variable dalam memory yang di asosiasikan.

Asosiasi ini tidak se-simple yang di perkirakan, bisa saja variable yang sama di asosiasikan dengan alamat yang berbeda dan pada waktu yang berbeda pada sebuah program. Aliases adalah ketika satu nama variable dapat mengakses lokasi memory yang sama. kelemahan aliasing adalah memperbolehkan variable untuk mengubah nilai berdasarkan tugas dari variable yang lain.

  • Type = variable menentukan range nilai dari variable yang di simpan dan set
    operasi yang mendefinisikan nilai dari type.

    • Contoh : tipe int pada java memiliki range -2147483648 sampai
      2147483647.
  • Value = variable content dari memory cell atau cell asosiasi dengan variable.

Binding

Binding adalah asosiasi antara attribute dan entity, seperti antara variable dengan tipe nya atau nilai, atau antara sebuah operasi dan symbol. Binding time adalah waktu yang dibutuhkan dalam melakukan binding.

Sebagai contoh :

count = count + 5;

tipe count  binding dengan waktu compile.

Binding dapat ditentukan tipe nya.

  1. Static binding yaitu terjadi sebelum program berjalan, dan tetap sama selama program eksekusi.
  2. Dynamic binding yaitu binding terjadi ketika program sedang berjalan dan nilai dapat berubah selama program dieksekusi.

Storage binding and lifetime

Ada 2 tipe storage binding yaitu :

  1. Allocation : mengambil cell dari kolam memori cell yang tersedia
  2. Deallocation: selmemori yangtelah tidak terikat dari variabel dikembali ke kolam memori yang tersedia.

Lifetime variable dimulai ketika cell spesifik terikat, dan berakhir ketika tidak terikat dari cell itu.

Terdapat 4 kategori type binding yaitu :

  1. Static

Static = cell yang terikat pada memory cell sebelum eksekusi dimulai, dan tetap terikat pada memory cell yang sama sampai program eksekusi selesai.

(+) semua addressing pada static variable bersifat langsung.

(­-) mengurangi fleksibilitas(tidak support untuk reculsive program)

  1. Stack dynamic

Stack dynamic variable = storage binding dibuat ketika deklarasi statement dijelaskan, tapi tipe nya bersifat terikat.

(+)support dynamic storage(reculsive)

(-)waktu akses yang lambat karena addressing tidak langsung

  1. Explicit heap dynamic

Explicit heap dynamic = abstrak memory cell yang di alokasi dan dealokasi dengan instruksi eksplicit run-time yang ditulis oleh programmer. Variable nya hanya bisa dialokasikan oleh pointer atau reference variable. Sebagai contoh :

  • int *intnode; // Create a pointer
  • intnode = new int; // Create the heap-dynamic variable
  • . . .
  • delete intnode; // Deallocate the heap-dynamic variable
  • // to which intnode points

Explicit heap dynamic variable pada tipe int dibuat oleh operator new. Variable ini bisa di referensikan melalui pointer , int node. Nantinya variable di deallocation dengan delete operator.

(+) storage manajemen yang dinamis.

(-) tidak efisien dan tidak handal.

  1. Implicit heap dynamic

Implicit heap dynamic terikat dengan heap storage ketika ada nilai yang ditugaskan.

Sebagai contoh:

highs = [74, 84, 86, 90, 71];

variable bernama highs sudah di deklarasi di sebelumnya, dan sekarang digunakan pada array 5 data.

(+) memiliki fleksibilitas yang memperbolehkan high generic code untuk ditulis ulang.

(-) run-time overhead mempertahankan semua atribut dinamis, yang akan
mencakup jenis array subscript dan range.

Scope

Scope (atau ruang lingkup variabel) adalah jangkauan kode program dimana perintah program masih bisa mengakses sebuah variabel.

Scope terbagi jadi dua, global dan local.

Scope Global :

Scope global merupakan ruang lingkup dimana variabel dapat digunakan atau dipanggil oleh semua fungsi. Hal ini betujuan untuk menghemat penulisan, karena tidak perlu lagi berkali – kali menuliskan variabel yang sama pada beberapa fungsi/prosedur.

Scope Local

Scope local merupakan ruang lingkup dimana variabel digunakan hanya pada ruang lingkup tertentu (terbatas).

Table

Bab 1, Describing Syntax and Semantics

December14

Syntax merupakan suatu kumpulan peraturan yang mendefinisikan bagaimana suatu kalimat dibentuk sebagai barisan/urutan dari pemilihan suatu kata dasar.

Syntax mengatur cara mengkombinasikan kata-kata tersebut ke dalam suatu statement dengan bentuk yang benar sehingga dapat disusun suatu program yang dapat berjalan dengan benar. Syntax itu sendiri tidak mengerti arti atau isi dari kalimat tersebut, yang bisa mengartikannya adalah semantik. Syntax menyediakan bentuk-bentuk notasi untuk komunikasi antara programmer dan pemroses bahasa pemrograman, sehihngga syntax mempermudah pembuatan suatu program. Syntax memiliki beberapa kriteria dan kriteria ini berlaku sama bagi semua bahasa pemrograman. Kriteria itu adalah:

  • Readability and Writeability

Sebuah bahasa pemrograman harus dapat menolong seorang programmer untuk dapat membuat suatu desain program sebelum melakukan coding. Kunci dari hal ini adalah kemudahan dan kesederhanaan dari syntax itu tersebut sehingga dapat mengembangkan algoritma yang diinginkan dengan kompleksitas algoritma yang rendah. Hal ini berkaitan pula dengan Writeability karena apabila syntax nya mudah dipahami maka dapat pula ditulis ulang atau diperbanyak dengan mudah.

  • Verifiability

Merupakan salah satu hal kunci atau terpenting dalam programming karena dengan verifikasi program yang mudah, program akan lebih mudah dibangun dan dikembangkan. Hal ini dapat di realisasikan dengan kesederhanaan struktu semantik dan syntax nya.

  • Kemudahan Translasi

User atau programmer dapat menerjemahkan maksud dari syntax dengan cepat sehingga dapat menghasilkan kode yang efisien.

  • Pengurangan Amibiguitas

Syntax yang ditulis tidak dapat berarti ganda misalnya contohnya adalah Array seperti yang nanti akan dijelaskan di bab-bab selanjutnya. Syntax memiliki beberapa fungsi. Fungsi syntax yang paling signifikan adalah ia dapat mempermudah users karena dia menyediakan bentuk-bentuk notasi untuk komunikasi antara programmer dengan pemroses bahasa pemrograman. Dalam bahasa C, terdapat beberapa peraturan atau syaratnya sendiri dalam penulisan dan semantiknya yaitu :

  • Tidak ada pembedaan dari Fungsi dan Prosedur
  • Setiap program C mempunyai fungsi utama yang dinamakan main
  • Program akan dimulai dari awal (atas) sampai akhir (bawah) secara berurutan
  • C merupakan bahasa yang case sensitif
  • Setiap pernyataan harus diakhiri dengan semi-colon

Semantics merupakan sebuah proses pendefinisian dari program yang benar secara syntax dari bahasa tersebut. Semantics memiliki beberapa keunggulan yaitu  diantaranya:

  • Standarisasi bahasa pemrograman
    • Banyak usaha yang dilakukan untuk menstandarisasi bahasa pemrograman seperti FORTRAN,COBOL, dan PL/1, untuk lebih memudahkan programmer menggunakannya.
  • Referensi untuk user.
    • Programmer membutuhkan suatu dokumentasi yang pasti supaya user dapat mengoperasikan program yang dibuat dengan baik.
  • Pembuktian dari program yang benar.
    • Secara matematis,program tidak mungkin bekerja dan berjalan jika tidak ada semantic.
  • Referensi untuk implementor.
    • Semantic akan mencegah suatu gaya bahasa yang tidak kompetibel yang diwujudkan dalam suatu implementasi berbeda walaupun dengan bahasa yang sama.
  • Implementasi otomatis. 
    • Suatu tool/alat dapat secara otomatis membuatu translasi bahasa yang melebihi parsing. Hal ini dapat dilakukan jika semantic sudah dirumuskan.
  • Pemahaman yang lebih baik dari desain bahasa.
    • Jika suatu rumusan semantic sulit untuk di deskripsikan secara formal maka rumusan semantic tersebut juga akan sulit digunakan oleh programmer.

Semantic memiliki beberapa cara dalam mendeskripsikan syntax yaitu:

  • Operational Semantic

Pendekatan ini mendefinisikan suatu mesin buatan (Abstract) dengan instruksi-instruksi primitif, tidak perlu realistik, tetapi cukup sederhana supaya tidak muncul kesalahpahaman. Deskripsi semantic dari bahasa pemrograman menentukan suatu translasi kekode.

  • Denotational Semantic

Diberikan suatu fungsi yang memetakan program-program computer yang ditunjuk kedalam bentuk nilai-nilai abstrak secara matematika (angka, nilai ,kebenaran, fungsi matematika, dan sebagainya).

  • Axiomatic Semantic

Pada pendekatan ini didefinisikan suatu tindakan program yang dibangun dengan property logika yang menyimpan status computer sebelum dan sesudah dieksekusi.

  • Algebraic Semantic

Pada pendekatan ini dipertimbangkan suatu objek komputasi yang menjadi syarat-syarat dalam aljabar multi-sorted

  • Structured Operational atau Natural Semantic

Seperti dalam pengambilan keputusan secara alamiah dengan logika program diberi suatu arti dari aturan yang diturunkan yang menggambarkan penilaian gagasan suatu Bahasa.

Berikut akan dijabarkan mengenai beberapa syntax yang terdapat di dalam bahasa C. Yang pertama kali akan dibahasa adalah praprosesor #include. #include merupakan salah satu jenis pengarah praprosesor.Pengarah praprosesor ini dipakai untuk membaca file yang di antaranya berisi deklarasi fungsi dan definisi konstanta. Beberapa file judul disediakan dalam C. File-file ini mempunyai ciri khusus yaitu diakhiri dengan ekstensi ‘.h’.

Contoh :

  1. #include <stdio.h>

mengisyaratkan bahwa pencarian file dilakukan pada direktori khusus, yaitu file include

  1. #include “nama file”

menyatakan bahwa pencarian file dilakukan pertama kali pada direktori aktif tempat program sumber dan seandainya tidak ditemukan pencarian akan dilanjutkan pada direktori lainnya yang sesuai dengan perintah pada sistem operasi.

Selanjutnya adalah pemberian komentar pada program. Pemberian komentar bukanlah sebuah keharusan, namun apabila kita nantinya bekerja sebagai sebuah tim yang membuat sebuah project besar maka komentar ini akan sangat dibutuhkan untuk membantu kolega Anda mengerti kode-kode Anda dan sebaliknya. Pada bahasa C, pemberian komentar pada program ditandai dengan tanda /* dan diakhiri dengan tanda */. Ada juga diawali dengan // yang membedakannya adalah untuk /*….*/ dapat diisi komentar hingga berbaris-baris untuk // hanya dapat diisi 1 kalimat komentar.

Cara menampilkan data ke layar pada C itu dilakukan dengan mengetikan beberapa keyword khusus dalam kodingan Anda, yaitu:

  • Fungsi printf
  • Dipakai untuk menampilkan suatu keluaran
    • contoh:
      • printf(“…….”);
      • printf(“String Kontrol”, argument1,argument2…);

<String kontrol yang dimaksud adalah keterangan yang akan ditampilkan pada layar beserta penentu format(%d, %f, %c,dll).>

  • Putchar
  • Khusus untuk menampilkan sebuah karakter pada layar. Penampilan karakter tidak diakhiri dengan perpindahan baris.
    • contoh:
    • putchar(‘A’);

<hasil keluaran sama dengan printf(“%c”,’A’); >

Selain itu, untuk memasukan data yang kita input dari keyboard, kita dapat melakukannya dengan :

  • Fungsi Scanf
  • Digunakan untuk memasukkan berbagai jenis data. Misalnya untuk memasukkan data jari-jari lingkaran digunakan adalah scanf(“%f”,&radius);Scanf(“String Kontrol”, daftar_argument);
  • Fungsi getchar()
  • Digunakan khusus untuk menerima masukkan berupa sebuah karakter dari keyboard.
    • contoh:
    • c = getchar();
    • scanf(“%c, &c);

<Maka variabel c akan berisi karakter yang diketikkan oleh user at EOF (End of File) jika ditemui akhir dari file.>

Setelah itu, hal penting selanjutnya yang akan sering digunakan selama kita menjadi seorang programmer adalah proses pengambilan keputusan. Proses pengambilan keputusan terdapat tiga cara yaitu:

  1. If

contoh:

  • Untuk 1 pernyataan
    • If(condition)
      • Statement;

(tidak dibutuhkan kurung kurawal karena apabila tidak ada, maka si fungsi if ini hanya akan membaca satu statement yg di awal. Apabila ada statement lain setelah statement ini, maka si fungsi If tidak akan menganggap bahwa statement itu adalah milik dia sehingga tidak akan dijalankan).

  • Untuk pernyataan majemuk
    • if(condition){
    • statement 1;
    • statement 2;
    • ….
    • ….
    • Statement n;
    • }
  1. If – Else

contoh:

  • Untuk dua statement
    • if(condition)
      • statement 1;
    • else
      • statement 2;

Note: kesalahan yang sering terjadi adalah si programmer sering menaruh titik koma setelah condition. Apabila itu terjadi maka akan terjadi syntax error karena si fungsi if ini menganggap conditionnya telah berhenti disini.

  1. Nested If
  • if(condition 1){
    • if(condition 2){
    • ….
    • ….
    • }
    • if(condition n){
    • statement
    • }
    • else {
    • statement
    • }
  • else if{
  • statement
  • }
  • else{
  • statement
  • }

Note: Digunakan apabila si programmer memiliki lebih dari satu kondisi.

  1. Else-if

contoh:

  • if(condition 1)
  •                         statement;
  • else if(condition 2)
  •                         statement;
  • else
  •                         statement;
  1. Switch – Case

contoh:

  • Switch(expression)
  •                         {case constant 1:
  •                         Statement 1;
  •                                     ….
  •                                     break;
  •                         case constant 2:
  •                                     .
  •                                     .
  •                                     .
  •                         case constant-n:
  •                                     statement-n;
  •                                     ……
  •                                     break;
  •                         default:
  •                                     ……
  •                                     break;
  •                         }

Note: Switch – case berfungsi untuk menggantikan nested-if. Dapat dilihat pada switch-case terdapat default, default memiliki kegunaan yang sama dengan else pada fungsi if-else.

Komponen lain yang penting dalam pekerjaan seorang programmer adalah proses looping. Looping pada bahasa C ada 3 cara yaitu:

  1. For

contoh:

  • Untuk 1 pernyataan
    • for(expression1;expression2;expression3)
    •                                     statement;
  • Untuk pernyataan majemuk
  • for(expression1;expression2;expression3)
  • {
  •                                     Statement 1;
  •                                     Statement 2;
  •                                     .
  •                                     .
  • }

Note:

Expression1 : digunakan untuk memberikan inisialisasi terhadap variabel pengendali loop

Expression2 : dipakai sebagai kondisi untuk keluar dari loop

Expression3 : dipakai sebagai pengatur kenaikan nilai variable pengendali loop

 

  1. While (pengecekan terhadap loop dilakukan di bagian awal(sebelum tubuh loop)
    • Pernyataan tunggal
  • Pernyataan majemuk
    • while(condition)
    •                                                 statement;
  • Pernyataan Tunggal
    • while(condition)
    •                                                 statement;
  1. Do – While (Dijalankan terus menerus sampai memenuhi kondisi yang diinginkan)
    • Untuk satu pernyataan
  • Untuk pernyataan majemuk
    • do{
    • statement 1;
    • statement 2;
    • } while(condition)
  • Untuk satu pernyataan
    • do{
    • statement;
    • } while(condition)
Newer Entries »