DAFTAR LABEL POPULER PENELITIAN.ID
DAFTAR LABEL POPULER PENELITIAN.ID
Tampilkan selengkapnya
Tampilkan lebih sedikit
Jangan Buka Artikel Ini!
DAFTAR ARSIP POSTING PENELITIAN.ID
DAFTAR ARSIP POSTING PENELITIAN.ID
Standar Pemrograman Bahasa C
- Dapatkan link
- Aplikasi Lainnya
Dipublikasikan Oleh
elfanmauludi
Berikut adalah tindakan yang dilakukan oleh Bahasa C ketika Program bahasa C memberikan hasil yang berbeda dari dua kompilator berbeda.
Contoh, perhatikan kode bahasa C sederhana berikut.
void main() { }
Program berikut akan gagal dijalankan menggunakan gcc dengan return tipe dari fungsi main adalah void, tetapi program tersebut dapat berhasil dikompilasi jika dijalankan pada Turbo C. Bagaimanakah cara menentukan apakah program C dapat dijalankan atau tidak.
Contoh, perhatikan kode bahasa C sederhana berikut.
void main() { }
Program berikut akan gagal dijalankan menggunakan gcc dengan return tipe dari fungsi main adalah void, tetapi program tersebut dapat berhasil dikompilasi jika dijalankan pada Turbo C. Bagaimanakah cara menentukan apakah program C dapat dijalankan atau tidak.
Contoh:
/* Standar pemrograman bahasa C */
#include<stdio.h>
int main()
{
int i = 1;
printf("%d %d %d\n", i++, i++, i);
return 0;
}
Output:
2 1 3 - jika menggunakan g++ 4.2.1 on Linux.i686
1 2 3 - jika menggunakan SunStudio C++ 5.9 on Linux.i686
2 1 3 - jika menggunakan g++ 4.2.1 on SunOS.x86pc
1 2 3 - jika menggunakan SunStudio C++ 5.9 on SunOS.x86pc
1 2 3 - jika menggunakan g++ 4.2.1 on SunOS.sun4u
1 2 3 - jika menggunakan SunStudio C++ 5.9 on SunOS.sun4u
Manakah diantara hasil kompilasi sebelumnya yang benar?
Jawabannya adalah tergantung dari standariasai bahasa C yang digunakan. Pada semua kasus dibutuhkan standar C untuk memahami output program yang dihasilkan oleh contoh.
Standar C
Standar C versi terbaru adalah ISO/IEC 9899:2018 (www.iso.org), juga dikenal sebagai C18 yang merupakan final draft yang dipublikasikan pada tahun 2018. Sebelum C18, ada standar lain bernama C11.
Behavior dari semua program dari standar C
Standar C mengeluarkan beberapa behavior dari banyak konstruktur C sebagai undefined dan beberapa sebagai unspecified untuk menyederhanakan spesifikasi dan memungkinkan fleksibilitas dalam implementasi. Contohnya, pada penggunaan bahasa C dari variabel outomatic apapun sebelum menghasilkan inisialisasi behavior undefined dan perintah evaluasi dari sub ekspresi yang tidak spesifik. Hal ini memungkinkan apapun cara yang paling mudah ataupun paling efisien, seandainya bentuk program tersebut diajukan.
1 2 3 - jika menggunakan SunStudio C++ 5.9 on Linux.i686
2 1 3 - jika menggunakan g++ 4.2.1 on SunOS.x86pc
1 2 3 - jika menggunakan SunStudio C++ 5.9 on SunOS.x86pc
1 2 3 - jika menggunakan g++ 4.2.1 on SunOS.sun4u
1 2 3 - jika menggunakan SunStudio C++ 5.9 on SunOS.sun4u
Manakah diantara hasil kompilasi sebelumnya yang benar?
Jawabannya adalah tergantung dari standariasai bahasa C yang digunakan. Pada semua kasus dibutuhkan standar C untuk memahami output program yang dihasilkan oleh contoh.
Standar C
Standar C versi terbaru adalah ISO/IEC 9899:2018 (www.iso.org), juga dikenal sebagai C18 yang merupakan final draft yang dipublikasikan pada tahun 2018. Sebelum C18, ada standar lain bernama C11.
Behavior dari semua program dari standar C
Standar C mengeluarkan beberapa behavior dari banyak konstruktur C sebagai undefined dan beberapa sebagai unspecified untuk menyederhanakan spesifikasi dan memungkinkan fleksibilitas dalam implementasi. Contohnya, pada penggunaan bahasa C dari variabel outomatic apapun sebelum menghasilkan inisialisasi behavior undefined dan perintah evaluasi dari sub ekspresi yang tidak spesifik. Hal ini memungkinkan apapun cara yang paling mudah ataupun paling efisien, seandainya bentuk program tersebut diajukan.
Apakah hasil dari dua contoh sebelumnya?
Dianggap bahwa contoh pertama adalah "void main()", maka standar dari bahasa c menyatakan bahwa:
The function called at program startup is named main. The implementation
declares no prototype for this function. It shall be defined with a return
type of int and with no parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names
may be used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;10) or in some other implementation-defined manner.
Jadi tipe return void tidak mengikuti standar dan hal ini dimungkinkan pada beberapa kompilator.
Catatan: bahwa statement pada Standar C ditandai sebagai unspesified behavior.
The order in which the function designator, arguments, and
subexpressions within the arguments are evaluated in a function
call (6.5.2.2).
Tindakan yang dilakukan program bahasa C yang undefined ataupun unspecified pada standar C
Sebagai programmer, bukanlah hal yang baik untuk menggunakan konstruksi program yang behavior-nya undefined ataupun unspecified, program seperti itu tidaklah harus digunakan karena hasil keluaran atau output dapat memberikan hasil yang berbeda pada compiler yang berbeda.
Dianggap bahwa contoh pertama adalah "void main()", maka standar dari bahasa c menyatakan bahwa:
The function called at program startup is named main. The implementation
declares no prototype for this function. It shall be defined with a return
type of int and with no parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names
may be used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;10) or in some other implementation-defined manner.
Jadi tipe return void tidak mengikuti standar dan hal ini dimungkinkan pada beberapa kompilator.
Catatan: bahwa statement pada Standar C ditandai sebagai unspesified behavior.
The order in which the function designator, arguments, and
subexpressions within the arguments are evaluated in a function
call (6.5.2.2).
Tindakan yang dilakukan program bahasa C yang undefined ataupun unspecified pada standar C
Sebagai programmer, bukanlah hal yang baik untuk menggunakan konstruksi program yang behavior-nya undefined ataupun unspecified, program seperti itu tidaklah harus digunakan karena hasil keluaran atau output dapat memberikan hasil yang berbeda pada compiler yang berbeda.
Referensi Tambahan:
- 3 Cara Utama Melakukan Mengkompilasi Program Bahasa C [klik]
- 8 Keunggulan Bahasa C [klik]
- 7 Jenis Sinyal Error Program pada Bahasa C [klik]
- 14 Jenis Karakter Escape Sequences pada Bahasa C [klik]
- Cara Pemisahan Baris pada Bahasa C [klik]
- 6+ Jenis Token dan Cara Penggunaannya pada Bahasa C [klik]
- Cara Penggunaan 32 Keyword dan Variabel pada Bahasa C [klik]
Menggunakan Blog Sebagai Sarana Hobi Menulis.
- Dapatkan link
- Aplikasi Lainnya
Komentar
Posting Komentar
Hubungi admin melalui Wa : +62-896-2514-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
~ Ikatlah Ilmu dengan Memostingkannya ~
Postingan populer dari blog ini (30 Hari)
Leger Nilai Peserta Didik Angkatan Tahun Masuk 2021 2022 - 2023 2024
Dipublikasikan Oleh
elfanmauludi
Leger Nilai Peserta Didik Angkatan Tahun Masuk 2020 2021 - 2022 2023
Dipublikasikan Oleh
elfanmauludi
Penggunaan fflush(stdin) Bahasa C dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Pengertian Asosiasi Komposisi dan Agregasi Java
Dipublikasikan Oleh
elfanmauludi
Specifier %d dan %i Bahasa C dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Sebuah format specifier adalah urutan sekuensial oleh inisial tanda persen (%) yang mengindikasikan sebuah format specifier , yang digunakan untuk menentukan tipe dan format dari data untuk diambil dari stream dan menyimpannya menuju lokasi yang ditunjuk oleh argumen tambahan. Singkatnya, hal ini memberitahukan tipe dari data mana yang akan disimpan dan tipe data apa yang akan dicetak.
Membuat Rumus Matematika Bahasa C Menggunakan Library Math.h
Dipublikasikan Oleh
elfanmauludi
Enkapsulasi Java dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Enkapsulasi didefinisikan sebagai pembungkusan data dalam satu buah unit. Enkapsulasi adalah mekanisme yang mengikat code program dan data yang dimanipulasi secara bersamaan pada bahasa pemrograman Java. Cara lain untuk berpikir mengenai enkapsulasi adalah upaya untuk melindungi atau sebagai perisai proteksi yang mencegah data untuk diakses oleh pihak luar.
4 Kesalahan Umum yang Sering Terjadi pada PTK
Dipublikasikan Oleh
elfanmauludi
Ciri khas PTK adalah adanya tindakan secara nyata dan konkret yang dilakukan oleh peserta didik atas dasar instruksi dari guru. Tindakan tersebut tidak boleh sembarangan, tetapi harus dapat dibenarkan secara teoretis. Hal yang tidak kalah pentingnya adalah, bahwa tindakan tersebut harus sesuai dengan tugas profesional seorang guru, dan juga tindakan tersebut tidak boleh mengubah situasi alamiah pembelajaran yang telah ada.
7 Paradigma Penelitian pada Statistika Penelitian
Dipublikasikan Oleh
elfanmauludi
Pada kegiatan penelitian kuantitatif yang berlandaskan pada sebuah asumsi kejadian yang tidak dapat diklasifikasikan, serta korelasi kejadian yang bersifat kausal sebab akibat, maka seorang peneliti dapat memfokuskan kegiatannya pada pengamatan beberapa variabel saja . Korelasi pola pada setiap variael yang diamati tersebut selanjutnya akan dikenal sebagai paradigma penelitian atau model penelitian .
Cara Membuat Drag and Drop pada HTML
Dipublikasikan Oleh
elfanmauludi
Drag dan drop adalah sebuah konsep interaktif yang yang memudahkan user dalam menggerakkan object dari satu lokasi ke lokasi yang lain dengan cara menyeretnya ( drag ). Hal ini memungkinkan user untuk melakukan klik dan menahan klik mouse tersebut kemudian membawa elemen yang diseret menuju ke lokasi yang lain, kemudian melepaskan tombol klik mouse untuk menjatuhkan ( drop ) elemen yang diseret tersebut ( drag ). Pada HTML 5 drag dan drop lebih mudah untuk membuat bentuk programnya dan juga lebih mudah untuk digunakan.
Postingan populer dari blog ini (All Time)
Cara Menggunakan Method Overloading Java dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Overloading memungkinkan berbagai method yang berbeda untuk memiliki nama yang sama, tetapi dengan signature yang berbeda pada bahasa pemrograman Java. Signature dapat berbeda oleh angka dari input parameter atau tipe dari input parameter atapun juga keduanya. Overloading juga berkaitan dengan compile time (atau static ) polymorphism .
Enkapsulasi Java dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Enkapsulasi didefinisikan sebagai pembungkusan data dalam satu buah unit. Enkapsulasi adalah mekanisme yang mengikat code program dan data yang dimanipulasi secara bersamaan pada bahasa pemrograman Java. Cara lain untuk berpikir mengenai enkapsulasi adalah upaya untuk melindungi atau sebagai perisai proteksi yang mencegah data untuk diakses oleh pihak luar.
Acces Modifier Java dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
Menerima Turunan Program Java Menggunakan Inheritance
Dipublikasikan Oleh
elfanmauludi
Operator Relasi dan Logika Bahasa C dan Fungsinya
Dipublikasikan Oleh
elfanmauludi
DAFTAR RUJUKAN
BalasHapushttps://www.iso.org/standard/74528.html
HapusMaksud dari standar bahasa C itu apa sih sebenernya?
BalasHapusStandard C adalah dokumen yang digunakan untuk mengurangi variasi dari implementasi bahasa C antar kompilator yang berbeda. Merupakan dokumen teknis dan ditulis untuk implementasi kompilator. Programmer yang sudah berpengalaman sangat merekomendasikan untuk membaca dokumen standar tersebut, beserta standarisasi bahasa C yang sudah ditetapkan didalamnya. Terdapat beberapa jenis dokumen standar bahasa C, dengan aturan standar impementasinya disebut juga "standar C" atau "ISO C". Mematuhi aturan standar salah satu dokumen bukan berarti tidak bisa dilakukan penambahan implementasi dari standar lain.
HapusBeberapa contoh dokumen standar C:
C89: Merupakan dokumen standar C pertama, dipublikasikan oleh American National Srandards Institute atau ANSI pada tahun 1989. Dapat dilakukan pemeriksaan juga terhadap kompilator pendukung dari ANSI C dengan memeriksa definisi dari _ANSI_ macro.
C90: Standar C89 kemudian diadopsi oleh International Organitation fo Standardization (ISO) pada tahun 1990, yang kemudian dikenal dengan Standar C90.
C95: Perluasan dari Standar C90 yang dipulikasikan pada tahun 1995. Pada standar ini dilakukan beberapa penambahan fitur seperti grafis dan pendukung multibyte. Juga dapat mendefinisikan macro _STDC_VERSION_ yang dapat diuji untuk mengukur versi dari ISO C pendukung kompilator saat ini.
C99: Merupakan peningkatand dari Standar C95 seperti penambahan komentar satu baris C++ style, fungsi inline, dan penambahan lainnya dari header.
C11: Dipublikasikan pada tahun 2011. Pada Standar ini dilakukan beberapa penambahan keyword seperti _Generic dan multi threading API. Juga dilakukan peningkatan pendukung Unicode.
Jadi, standar C itu aslinya cuma dokumen yang dipake sebagai aturan standar untuk menulis atau membuat program dalam bahasa C, gitu
BalasHapusSetiap bahasa pemrograman, itu adalah suatu kumpulan aturan sintak yang secara formal dapat dinyatakan sebagai suatu spefisikasi teknik. Namun berbeda dengan bahasa C, dalam sejarahnya aturan pengembangan bahasa C tersebut memiliki beragam gaya pembuatan sintak. Seiring dengan berjalannya waktu, lama kelamaan hal ini malah menimbulkan masalah besar karena kurangnya standarisasi yang menjadi dasar dari dialek bahasa yang ditak kompatibel. Selain itu, bahasa juga perlu ditingkatkan dengan penambahan beberap fitur bahasa baru beserta struktur sintaknya. Hal ini hanya dapat dicapai jika dilakukan pembaruan standar yang sudah ditetapkan, sehingga setiap vendor kompilator tahu bagaimana cara mengimplementasikan fitur-fitur tersebut. Inilah alasan kenapa dikembangkan suatu dokemen Standar C.
BalasHapusSaat ini sebenarnya cuma ada satu Standar C, seperti yang dirujuk dalam ISO / IEC 9899:2018. Beberapa programmer ada yang memilih untuk tidak terikat pada aturan standar tersebut, jadi cukup ditulis kode program sesuai dengan target kompilator yang sedang populer. ISO menerbitkan standar C tersebut juga dengan meminta sedikit biaya publikasi.
BalasHapusLatar belakang sejarah. Sebelum diterbitkannya suatu standar bahasa C seperti sekarang. Beberapa programmer masih ada tetap ada yang menggunakan ANSI C89 atau C99 ketika melakukan pembaruan target kode untuk kompilator tertentu dalam sistem operasi.
Mengapa hasil yang diberikan pada setiap kompilator berbeda-beda?
BalasHapusBergandung pada standar bahasa c yang digunakan pada setiap kompilator.
HapusBisa lebih dijelaskan mengenai konsep argc dan argv pada bahasa C?
BalasHapusint main(int argc, char *argv[]) digunakan untuk argumen baris perintah dimana argc merupakan singkatan dari jumlah argumen dan argv vector argumen yang menunjuk pada alamat argumen yang dilewatkan, argc dan argv dapat berupa identifer valid apapun.
HapusSecara umum aturan apa yang harus diikuti untuk memecahkan kode program berikut jika pertanyaan yang ditanyakan dalam suatu tes muncul pertanyaan demikian?
BalasHapus#include
int main()
{
int i = 1;
printf("%d %d %d\n", i++, i++, i);
return 0;
}
Mohon Penjelasannya.
2 1 3 - menggunakan g++ 4.2.1 pada Linux.i686
Hapus1 2 3 - menggunakan SunStudio C++ 5.9 pada Linux.i686
2 1 3 - menggunakan g++ 4.2.1 pada SunOS.x86pc
1 2 3 - menggunakan SunStudio C++ 5.9 pada SunOS.x86pc
1 2 3 - menggunakan g++ 4.2.1 pada SunOS.sun4u
1 2 3 - menggunakan SunStudio C++ 5.9 pada SunOS.sun4u
they'll be impressed.
Saya kurang paham kenapa output yang dihasilkan adalah 2 1 3?
BalasHapusKarena program bekerja dengan ukuran eksekusi prioritas, secara umum kompilator bekerja untuk mengeksekusi program dari kanan ke kiri, namun jika kedua operator bernilai sama dan memiliki operator ++, -- yang sama, maka operator kemudian akan bekerja dari kanan ke kiri tetapi dengan memprioritaskan operator dengan prioritas lebih tinggi terlebih dahulu yaitu ++.
Hapus#include
int main()
{
int i = 1;
printf("%d\n", i++);
printf("%d\n", ++i);
printf("%d\n", i++);
printf("%d\n", i);
printf("%d\n", i--);
printf("%d\n", --i);
printf("%d\n", i);
i=i+5;
printf("%d %d %d\n", i--, i++, ++i);
printf("%d %d %d\n", i++, i++, i);
printf("%d %d %d\n", i++, i, i++);
printf("%d %d %d\n", i++, i++, i++);
printf("%d %d %d\n", i, i++, i++);
printf("%d %d %d\n", i--, i, i--);
printf("%d %d %d\n", i--, i--, i);
printf("%d %d %d\n", i, i--, i--);
printf("%d\n", ++i);
printf("%d\n", i++);
return 0;
}
Karena argumen fungsi yang dievaluasi tidak ditentukan urutannya. Maka printf("%d %d %d", i++, i++ ,i); dapat mengikuti aturan urutan sebagai berikut, dimana i tengah pertama dievaluasi terlebih dahulu sehingga nilai tengah adalah 1, tetapi karena nilai i bertambah, yaitu, i=2, maka kode paling kiri berikutnya akan dievaluasi dan nilai 2 akan dicetak, dan selanjutnya bertambah menjadi 3, dan selanjutnya baris kode program yang paling kanan akan dicetak.
HapusCatatan: kompilator yang berbeda dapat mengikuti urutan apapun atau bahkan urutan acak untuk evaluasi argumen fungsi pada bahasa C.
int i=1;
BalasHapusprintf("%d %d %d %d %d", i, ++i, i++,++i);
Program tersebut memberikan saya hasil output: -4 4 2 4
Ada yang bisa bantu jelaskan kenapa hasilnya demikian?
Sesuai dengan standar bahasa C, urutan evaluasi argumen pada suatu fungsi tidak dapat ditentukan. Artinya argumen apapun dapat dipilih secara acak untuk dilakukan evaluasi. Juga, hal ini bergantung pada jenis kompilator yang digunakan.
HapusKarena bahasa program yang digunakan adalah bahasa C, maka harus dihindari penggunaan konstruksi pemrograman yang perilakunya tidak dapat ditentukan atau tidak dapat diprediksi, program semacam ini harus selalu dihindari penggunannya karena hasil output yang muncul dapat berbeda jika menggunakan jenis kompilator yang berbeda pula.
Untuk contoh program tersebut selain menggunakan kompilator gcc menurut saya hasil yang akan dikeluarkan adalah 2 1 3.
Apa perbedaan antara while loop dan do while loop pada bahasa C?
BalasHapusPada bahasa C while loop, kondisi diperiksa terlebih dahulu dan loop kemudian dieksekusi. Sedangkan pada do while loop, proses loop dieksekusi terlebih dahulu kemudian kondisi while diperiksa.
HapusAda yang bisa bantu saya untuk memahami materi pada artikel ini....
BalasHapusPada artikel ini dijelaskan beberapa standar pada bahasa C, atau lebih tepatnya beberapa aturan. Dari aturan standar tersebut, beberapa kompilator kemudian mengikuti aturan atau perintah eksekusi suatu program, namun pada beberapa kompilator lain ternyata aturan tersebut tidak benar-benar diikuti sehingga hasil yang ditampilkan berbeda seperti yang dijelaskan pada contoh.
HapusKesimpulan, hasil atau output yang akan ditampilkan dapat berbeda-beda sesuai dengan jenis kompilator yang digunakan. trima kasih.