Untaian: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Aleirezkiette (bicara | kontrib)
k Aleirezkiette memindahkan halaman String ke Untaian
Tag: Suntingan perangkat seluler Suntingan peramban seluler
Tidak ada ringkasan suntingan
Tag: Suntingan perangkat seluler Suntingan peramban seluler
 
Baris 1:
{{expand language|topic=|langcode=en|otherarticle=String (computer science)|date=Oktober 2018}}
[[Berkas:0321 DNA Macrostructure.jpg|ka|jmpl|250px|StringUntaian pada [[DNA]] yang terdiri dari [[basis nitrogenus]].]]
[[Berkas:Hamming distance 3 bit binary.svg|ka|jmpl|250px|StringUntaian biner pada (''Hyper'')cube'' dengan panjang digit 3]]
'''String''' atau disebut juga '''untaian''' dalam [[pemrograman komputer]] adalah sebuah deret simbol. Tipe data string adalah tipe [[data]] yang digunakan untuk menyimpan barisan [[Karakter (tipe data)|karakter]]. Sebuah string umumnya dianggap sebagai tipe data dan sering diimplementasi sebagai [[Larik|struktur data ''array'']] [[bita]] (atau [[Kata (Arsitektur komputer)|kata]]) yang menyimpan urutan elemen, biasanya karakter, menggunakan beberapa [[Pengodean karakter|pengkodean karakter]]. ''String'' juga dapat mendenotasikan [[Tipe data Larik|array]] yang lebih umum atau tipe dan struktur data urutan (atau [[Senarai (komputasi)|daftar]]) lainnya.
 
'''StringUntaian''' atau disebut juga '''untaian'''({{lang-en|string}}) dalam [[pemrograman komputer]] adalah sebuah deret simbol. Tipe data stringuntaian adalah tipe [[data]] yang digunakan untuk menyimpan barisan [[Karakter (tipe data)|karakter]]. Sebuah stringuntaian umumnya dianggap sebagai tipe data dan sering diimplementasi sebagai [[Larik|struktur data ''array'']] [[bita]] (atau [[Kata (Arsitektur komputer)|kata]]) yang menyimpan urutan elemenunsur, biasanya karakter, menggunakan beberapa [[Pengodean karakter|pengkodean karakter]]. ''String'' juga dapat mendenotasikan [[Tipe data Larik|array]] yang lebih umum atau tipe dan struktur data urutan (atau [[Senarai (komputasi)|daftar]]) lainnya.
Ketika sebuah string muncul secara harfiah dalam [[kode sumber]], itu dikenal sebagai [[string literal]] atau string anonim.<ref>{{cite web|title=Introduction To Java - MFC 158 G|url=http://www.acsu.buffalo.edu/~fineberg/mfc158/week10lecture.htm|archive-url=https://web.archive.org/web/20160303233357/http://www.acsu.buffalo.edu/~fineberg/mfc158/week10lecture.htm|archive-date=2016-03-03|quote=String literals (or constants) are called ‘anonymous strings’|url-status=live}}</ref>
 
Ketika sebuah stringuntaian muncul secara harfiah dalam [[kode sumber]], itu dikenal sebagai [[string literal|untaian harfiah]] atau stringuntaian anonimawanama.<ref>{{cite web|title=Introduction To Java - MFC 158 G|url=http://www.acsu.buffalo.edu/~fineberg/mfc158/week10lecture.htm|archive-url=https://web.archive.org/web/20160303233357/http://www.acsu.buffalo.edu/~fineberg/mfc158/week10lecture.htm|archive-date=2016-03-03|quote=String literals (or constants) are called ‘anonymous strings’|url-status=live}}</ref>
Dalam bahasa formal, yang digunakan dalam [[logika matematika]] dan [[ilmu komputer teoretis]], sebuah string adalah urutan [[Simbol (informatika)|simbol]] yang terbatas yang dipilih dari himpunan yang disebut [[Alfabet (bahasa formal)|alfabet]].
 
Dalam bahasa formal, yang digunakan dalam [[logika matematika]] dan [[ilmu komputer teoretis]], sebuah stringuntaian adalah urutan [[Simbol (informatika)|simbol]] yang terbatas yang dipilih dari himpunan yang disebut [[Alfabet (bahasa formal)|alfabet]].
== Tipe data string ==
 
Sebuah Tipe data string adalah tipe data yang dimodelkan berdasarkan ide string formal. String adalah tipe data yang sangat penting dan berguna sehingga diimplementasikan di hampir setiap [[bahasa pemrograman]]. Dalam beberapa bahasa mereka tersedia sebagai [[Tipe data primitif|tipe primitif]] dan dalam bahasa lain sebagai [[Tipe data komposit|tipe komposit]]. Sintaks dari sebagian besar bahasa pemrograman tingkat tinggi memungkinkan untuk sebuah string, biasanya dikutip dalam beberapa cara, untuk mewakili sebuah instance dari tipe data string; meta-string seperti itu disebut ''literal'' atau ''string literal''.
== Tipe data stringuntaian ==
Sebuah Tipe data stringuntaian adalah tipe data yang dimodelkan berdasarkan ide stringuntaian formal. StringUntaian adalah tipe data yang sangat penting dan berguna sehingga diimplementasikan di hampir setiap [[bahasa pemrograman]]. Dalam beberapa bahasa mereka tersedia sebagai [[Tipe data primitif|tipe primitif]] dan dalam bahasa lain sebagai [[Tipe data komposit|tipe komposit]]. Sintaks dari sebagian besar bahasa pemrograman tingkat tinggi memungkinkan untuk sebuah stringuntaian, biasanya dikutip dalam beberapa cara, untuk mewakili sebuah instance dari tipe data stringuntaian; ''meta-string'' seperti itu disebut ''literal'' atau ''string literal''.
 
=== Representasi ===
Representasi stringuntaian sangat bergantung pada pilihan repertoar karakter dan metode [[pengkodean karakter]]. Implementasi stringuntaian yang kuno dirancang untuk bekerja dengan repertoar dan pengkodean yang ditentukan oleh [[ASCII]], atau ekstensi terbaru seperti seri [[ISO 8859]]. Implementasi kini sering menggunakan repertoar ekstensif yang didefinisikan oleh [[Unicode]] bersama dengan berbagai pengkodean kompleks seperti [[UTF-8]] dan [[UTF-16]].
 
==== StringUntaian sebagai ''record'' ====
Banyak bahasa, termasuk yang berorientasi objek, mengimplementasikan stringuntaian sebagai [[record]] dengan struktur internal seperti:<syntaxhighlight lang="cpp">
class string {
size_t length;
Baris 21 ⟶ 22:
};
 
</syntaxhighlight>Namun, karena implementasinya biasanya [[Penyembunyian informasi|disembunyikan]], stringuntaian harus diakses dan dimodifikasi melalui fungsi anggota. <code>text</code> adalah penunjuk ke area memori yang dialokasikan secara dinamis, yang dapat diperluas sesuai kebutuhan. Lihat juga [[Penanganan string C++|stringuntaian (C++)]].
 
=== Perhatian pada keamanan ===
Tata letak memori dan persyaratan penyimpanan stringuntaian yang berbeda dapat memengaruhi keamanan program yang mengakses data stringuntaian. Representasi stringuntauan yang membutuhkan karakter pengakhiran biasanya rentan terhadap masalah [[Luapan penyangga|''buffer overflow'']] jika karakter pengakhiran tidak ada, disebabkan oleh kesalahan pengkodean atau penyerang dengan sengaja mengubah data. Representasi stringuntaian yang mengadopsimenyadur bidang panjang terpisah juga rentan jika panjangnya dapat dimanipulasi. Dalam beberapa kasus, kode program mengakses data stringuntaian memerlukan [[pemeriksaan batas]] untuk memastikan bahwa itu tidak secara tidak sengaja mengakses atau mengubah data di luar batas memori stringuntaian.
 
Data stringuntaian sering diperoleh dari input pengguna ke program. Dengan demikian, merupakan tanggung jawab program untuk memvalidasi stringuntaian untuk memastikan bahwa stringuntaian tersebut mewakili format yang diharapkan. Melakukan validasi inputmasukan pengguna secara [[Masukan validasi tidak tepat|terbatas atau tidak]] sama sekali dapat menyebabkan program menjadi rentan terhadap serangan [[injeksi kode]].
 
== Tipe data stringuntaian dalam beberapa bahasa pemrograman ==
 
=== Bahasa Pascal ===
Dalam bahasa Pascal, tipe data stringuntaian dituliskan sebagai '''string'''. Pada [[kompilator]] Pascal lama, stringuntaian terpanjang yang dapat dibuat terdiri dari 255 karakter. Hal ini terjadi karena Pascal menggunakan 1 [[byte]] data untuk menyimpan [[panjang efektif]] stringuntaian.
 
Contoh kode Pascal yang menggunakan tipe data stringuntaian:
program str;
var s: string[100]; //jika panjang maksimum tidak dimasukkan, kompilator akan menganggapnya 255
Baris 45 ⟶ 46:
=== Bahasa C ===
 
Dalam bahasa C tidak ada tipe data khusus untuk menyimpan stringuntaian. StringUntaian biasanya disimpan sebagai [[larik]] dari karakter-karakter. Berbeda dengan bahasa Pascal, stringuntaian pada bahasa C merupakan sebuah ''[[null-terminated string]]'', sehingga kapasitasnya hanya dibatasi oleh kapasitas [[memori]] komputer. Seperti pada tipe data [[larik]] pada bahasa C, pengguna dapat memberikan batas maksimum karakter yang dapat ditampung.
 
Contoh kode C yang menggunakan tipe data stringuntaian:
#include <stdio.h>
int main(){
char s[100]; /* membuat stringuntaian dengan panjang maksimum 99 karakter, karena karakter terakhir harus [[null]] */
s = "Hello world";
printf("%s\n", s);
Baris 56 ⟶ 57:
 
=== Bahasa C++ ===
Bahasa C++ merupakan turunan dari bahasa C sehingga [[representasi]] stringuntaian sebagai [[larik]] [[karakter]] masih berlaku. Namun bahasa C++ juga menyediakan tipe data stringuntaian yang terdapat dalam [[C++ Standard Template Library]] (STL).
 
Contoh kode C++ yang menggunakan tipe data stringuntaian pada STL:
#include <string>
#include <iostream>
Baris 68 ⟶ 69:
}
=== Bahasa PHP ===
Di PHP, Stringuntaian adalah kumpulan dari karakter, bilangan, spasi, dan yang lainnya yang berada dalam tanda petik. Di bawah ini semuanya adalah stringuntaian:
* '9 Januari 2009 '
* '1.000.000'
* "satu juta"
* 'Belajar PHP'
Contoh Penggunaan StringUntaian di PHP
//mendefinisikan stringuntaian
$kegiatan = 'Belajar PHP';
$tempat = 'wikipedia';
Baris 81 ⟶ 82:
 
=== Bahasa Python ===
Pada bahasa python, stringuntaian diapit dengan tanda kutip tunggal maupun ganda. Contoh Penggunaan StringUntaian di Python
#mendefinisikan stringuntaian
string1 = 'halo dunia'
string2 = "ini string pada bahasa python"
#keluaran stringuntaian
print(string1)
print(string2)
#menggabungkan stringuntaian
print(string1+" "+string2)