Lompat ke isi

Untaian: Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
Tidak ada ringkasan suntingan
Tag: Suntingan perangkat seluler Suntingan peramban seluler
 
(3 revisi perantara oleh 3 pengguna tidak ditampilkan)
Baris 1: Baris 1:
{{expand language|topic=|langcode=en|otherarticle=String (computer science)|date=Oktober 2018}}
{{expand language|topic=|langcode=en|otherarticle=String (computer science)|date=Oktober 2018}}
[[Berkas:0321 DNA Macrostructure.jpg|ka|jmpl|250px|String pada [[DNA]] yang terdiri dari [[basis nitrogenus]].]]
[[Berkas:0321 DNA Macrostructure.jpg|ka|jmpl|250px|Untaian pada [[DNA]] yang terdiri dari [[basis nitrogenus]].]]
[[Berkas:Hamming distance 3 bit binary.svg|ka|jmpl|250px|String biner pada (Hyper)cube dengan panjang digit 3]]
[[Berkas:Hamming distance 3 bit binary.svg|ka|jmpl|250px|Untaian 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.


'''Untaian''' ({{lang-en|string}}) dalam [[pemrograman komputer]] adalah sebuah deret simbol. Tipe data untaian adalah tipe [[data]] yang digunakan untuk menyimpan barisan [[Karakter (tipe data)|karakter]]. Sebuah untaian umumnya dianggap sebagai tipe data dan sering diimplementasi sebagai [[Larik|struktur data ''array'']] [[bita]] (atau [[Kata (Arsitektur komputer)|kata]]) yang menyimpan urutan unsur, 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 untaian muncul secara harfiah dalam [[kode sumber]], itu dikenal sebagai [[string literal|untaian harfiah]] atau untaian awanama.<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 untaian 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 untaian ==
Tipe data untaian adalah tipe data yang dimodelkan berdasarkan ide untaian formal. Untaian 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 untaian, biasanya dikutip dalam beberapa cara, untuk mewakili sebuah instance dari tipe data untaian; ''meta-string'' seperti itu disebut ''literal'' atau ''string literal''.


=== Representasi ===
=== Representasi ===
Representasi string sangat bergantung pada pilihan repertoar karakter dan metode [[pengkodean karakter]]. Implementasi string 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]].
Representasi untaian sangat bergantung pada pilihan repertoar karakter dan metode [[pengkodean karakter]]. Implementasi untaian 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]].


==== String sebagai record ====
==== Untaian sebagai ''record'' ====
Banyak bahasa, termasuk yang berorientasi objek, mengimplementasikan string sebagai [[record]] dengan struktur internal seperti:<syntaxhighlight lang="cpp">
Banyak bahasa, termasuk yang berorientasi objek, mengimplementasikan untaian sebagai [[record]] dengan struktur internal seperti:<syntaxhighlight lang="cpp">
class string {
class string {
size_t length;
size_t length;
Baris 21: Baris 22:
};
};


</syntaxhighlight>Namun, karena implementasinya biasanya [[Penyembunyian informasi|disembunyikan]], string 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++|string (C++)]].
</syntaxhighlight>Namun, karena implementasinya biasanya [[Penyembunyian informasi|disembunyikan]], untaian 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++|untaian (C++)]].


=== Perhatian pada keamanan ===
=== Perhatian pada keamanan ===
Tata letak memori dan persyaratan penyimpanan string yang berbeda dapat memengaruhi keamanan program yang mengakses data string. Representasi string 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 string yang mengadopsi bidang panjang terpisah juga rentan jika panjangnya dapat dimanipulasi. Dalam beberapa kasus, kode program mengakses data string memerlukan [[pemeriksaan batas]] untuk memastikan bahwa itu tidak secara tidak sengaja mengakses atau mengubah data di luar batas memori string.
Tata letak memori dan persyaratan penyimpanan untaian yang berbeda dapat memengaruhi keamanan program yang mengakses data untaian. Representasi untauan 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 untaian yang menyadur bidang panjang terpisah juga rentan jika panjangnya dapat dimanipulasi. Dalam beberapa kasus, kode program mengakses data untaian memerlukan [[pemeriksaan batas]] untuk memastikan bahwa itu tidak secara tidak sengaja mengakses atau mengubah data di luar batas memori untaian.


Data string sering diperoleh dari input pengguna ke program. Dengan demikian, merupakan tanggung jawab program untuk memvalidasi string untuk memastikan bahwa string tersebut mewakili format yang diharapkan. Melakukan validasi input pengguna secara [[Masukan validasi tidak tepat|terbatas atau tidak]] sama sekali dapat menyebabkan program menjadi rentan terhadap serangan [[injeksi kode]].
Data untaian sering diperoleh dari input pengguna ke program. Dengan demikian, merupakan tanggung jawab program untuk memvalidasi untaian untuk memastikan bahwa untaian tersebut mewakili format yang diharapkan. Melakukan validasi masukan pengguna secara [[Masukan validasi tidak tepat|terbatas atau tidak]] sama sekali dapat menyebabkan program menjadi rentan terhadap serangan [[injeksi kode]].


== Tipe data string dalam beberapa bahasa pemrograman ==
== Tipe data untaian dalam beberapa bahasa pemrograman ==


=== Bahasa Pascal ===
=== Bahasa Pascal ===
Dalam bahasa Pascal, tipe data string dituliskan sebagai '''string'''. Pada [[kompilator]] Pascal lama, string terpanjang yang dapat dibuat terdiri dari 255 karakter. Hal ini terjadi karena Pascal menggunakan 1 [[byte]] data untuk menyimpan [[panjang efektif]] string.
Dalam bahasa Pascal, tipe data untaian dituliskan sebagai '''string'''. Pada [[kompilator]] Pascal lama, untaian terpanjang yang dapat dibuat terdiri dari 255 karakter. Hal ini terjadi karena Pascal menggunakan 1 [[byte]] data untuk menyimpan [[panjang efektif]] untaian.


Contoh kode Pascal yang menggunakan tipe data string:
Contoh kode Pascal yang menggunakan tipe data untaian:
program str;
program str;
var s: string[100]; //jika panjang maksimum tidak dimasukkan, kompilator akan menganggapnya 255
var s: string[100]; //jika panjang maksimum tidak dimasukkan, kompilator akan menganggapnya 255
begin
begining
su:= 'Hello world';
s := 'Hello world';
writeln(su);
writeln(s);
end.
end.


Baris 45: Baris 46:
=== Bahasa C ===
=== Bahasa C ===


Dalam bahasa C tidak ada tipe data khusus untuk menyimpan string. String biasanya disimpan sebagai [[larik]] dari karakter-karakter. Berbeda dengan bahasa Pascal, string 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.
Dalam bahasa C tidak ada tipe data khusus untuk menyimpan untaian. Untaian biasanya disimpan sebagai [[larik]] dari karakter-karakter. Berbeda dengan bahasa Pascal, untaian 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 string:
Contoh kode C yang menggunakan tipe data untaian:
#include <stdio.h>
#include <stdio.h>
int main(){
int main(){
char s[100]; /* membuat string dengan panjang maksimum 99 karakter, karena karakter terakhir harus [[null]] */
char s[100]; /* membuat untaian dengan panjang maksimum 99 karakter, karena karakter terakhir harus [[null]] */
s = "Hello world";
s = "Hello world";
printf("%s\n", s);
printf("%s\n", s);
Baris 56: Baris 57:


=== Bahasa C++ ===
=== Bahasa C++ ===
Bahasa C++ merupakan turunan dari bahasa C sehingga [[representasi]] string sebagai [[larik]] [[karakter]] masih berlaku. Namun bahasa C++ juga menyediakan tipe data string yang terdapat dalam [[C++ Standard Template Library]] (STL).
Bahasa C++ merupakan turunan dari bahasa C sehingga [[representasi]] untaian sebagai [[larik]] [[karakter]] masih berlaku. Namun bahasa C++ juga menyediakan tipe data untaian yang terdapat dalam [[C++ Standard Template Library]] (STL).


Contoh kode C++ yang menggunakan tipe data string pada STL:
Contoh kode C++ yang menggunakan tipe data untaian pada STL:
#include <string>
#include <string>
#include <iostream>
#include <iostream>
Baris 68: Baris 69:
}
}
=== Bahasa PHP ===
=== Bahasa PHP ===
Di PHP String adalah kumpulan dari karakter, bilangan, spasi, dan yang lainnya yang berada dalam tanda petik. Di bawah ini semuanya adalah string:
Di PHP, untaian adalah kumpulan dari karakter, bilangan, spasi, dan yang lainnya yang berada dalam tanda petik. Di bawah ini semuanya adalah untaian:
* '9 Januari 2009 '
* '9 Januari 2009 '
* '1.000.000'
* '1.000.000'
* "satu juta"
* "satu juta"
* 'Belajar PHP'
* 'Belajar PHP'
Contoh Penggunaan String di PHP
Contoh Penggunaan Untaian di PHP
//mendefinisikan string
//mendefinisikan untaian
$kegiatan = 'Belajar PHP';
$kegiatan = 'Belajar PHP';
$tempat = 'wikipedia';
$tempat = 'wikipedia';
Baris 81: Baris 82:


=== Bahasa Python ===
=== Bahasa Python ===
Pada bahasa python string diapit dengan tanda kutip tunggal maupun ganda. Contoh Penggunaan String di Python
Pada bahasa python, untaian diapit dengan tanda kutip tunggal maupun ganda. Contoh Penggunaan Untaian di Python
#mendefinisikan string
#mendefinisikan untaian
string1 = 'halo dunia'
string1 = 'halo dunia'
string2 = "ini string pada bahasa python"
string2 = "ini string pada bahasa python"
#keluaran string
#keluaran untaian
print(string1)
print(string1)
print(string2)
print(string2)
#menggabungkan string
#menggabungkan untaian
print(string1+" "+string2)
print(string1+" "+string2)
Baris 96: Baris 97:
{{Commons category|String}}
{{Commons category|String}}
{{reflist}}
{{reflist}}

{{bahasa-komputer-stub}}
{{Authority control}}
{{Authority control}}


Baris 104: Baris 105:
[[Kategori:Tipe primitif]]
[[Kategori:Tipe primitif]]
[[Kategori:Entitas sintaksis]]
[[Kategori:Entitas sintaksis]]


{{bahasa-komputer-stub}}

Revisi terkini sejak 21 April 2024 22.04

Untaian pada DNA yang terdiri dari basis nitrogenus.
Untaian biner pada (Hyper)cube dengan panjang digit 3

Untaian (bahasa Inggris: string) dalam pemrograman komputer adalah sebuah deret simbol. Tipe data untaian adalah tipe data yang digunakan untuk menyimpan barisan karakter. Sebuah untaian umumnya dianggap sebagai tipe data dan sering diimplementasi sebagai struktur data array bita (atau kata) yang menyimpan urutan unsur, biasanya karakter, menggunakan beberapa pengkodean karakter. String juga dapat mendenotasikan array yang lebih umum atau tipe dan struktur data urutan (atau daftar) lainnya.

Ketika sebuah untaian muncul secara harfiah dalam kode sumber, itu dikenal sebagai untaian harfiah atau untaian awanama.[1]

Dalam bahasa formal, yang digunakan dalam logika matematika dan ilmu komputer teoretis, sebuah untaian adalah urutan simbol yang terbatas yang dipilih dari himpunan yang disebut alfabet.

Tipe data untaian

[sunting | sunting sumber]

Tipe data untaian adalah tipe data yang dimodelkan berdasarkan ide untaian formal. Untaian adalah tipe data yang sangat penting dan berguna sehingga diimplementasikan di hampir setiap bahasa pemrograman. Dalam beberapa bahasa mereka tersedia sebagai tipe primitif dan dalam bahasa lain sebagai tipe komposit. Sintaks dari sebagian besar bahasa pemrograman tingkat tinggi memungkinkan untuk sebuah untaian, biasanya dikutip dalam beberapa cara, untuk mewakili sebuah instance dari tipe data untaian; meta-string seperti itu disebut literal atau string literal.

Representasi

[sunting | sunting sumber]

Representasi untaian sangat bergantung pada pilihan repertoar karakter dan metode pengkodean karakter. Implementasi untaian 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.

Untaian sebagai record

[sunting | sunting sumber]

Banyak bahasa, termasuk yang berorientasi objek, mengimplementasikan untaian sebagai record dengan struktur internal seperti:

class string {
  size_t length;
  char *text;
};

Namun, karena implementasinya biasanya disembunyikan, untaian harus diakses dan dimodifikasi melalui fungsi anggota. text adalah penunjuk ke area memori yang dialokasikan secara dinamis, yang dapat diperluas sesuai kebutuhan. Lihat juga untaian (C++).

Perhatian pada keamanan

[sunting | sunting sumber]

Tata letak memori dan persyaratan penyimpanan untaian yang berbeda dapat memengaruhi keamanan program yang mengakses data untaian. Representasi untauan yang membutuhkan karakter pengakhiran biasanya rentan terhadap masalah buffer overflow jika karakter pengakhiran tidak ada, disebabkan oleh kesalahan pengkodean atau penyerang dengan sengaja mengubah data. Representasi untaian yang menyadur bidang panjang terpisah juga rentan jika panjangnya dapat dimanipulasi. Dalam beberapa kasus, kode program mengakses data untaian memerlukan pemeriksaan batas untuk memastikan bahwa itu tidak secara tidak sengaja mengakses atau mengubah data di luar batas memori untaian.

Data untaian sering diperoleh dari input pengguna ke program. Dengan demikian, merupakan tanggung jawab program untuk memvalidasi untaian untuk memastikan bahwa untaian tersebut mewakili format yang diharapkan. Melakukan validasi masukan pengguna secara terbatas atau tidak sama sekali dapat menyebabkan program menjadi rentan terhadap serangan injeksi kode.

Tipe data untaian dalam beberapa bahasa pemrograman

[sunting | sunting sumber]

Bahasa Pascal

[sunting | sunting sumber]

Dalam bahasa Pascal, tipe data untaian dituliskan sebagai string. Pada kompilator Pascal lama, untaian terpanjang yang dapat dibuat terdiri dari 255 karakter. Hal ini terjadi karena Pascal menggunakan 1 byte data untuk menyimpan panjang efektif untaian.

Contoh kode Pascal yang menggunakan tipe data untaian:

program str;
var s: string[100];  //jika panjang maksimum tidak dimasukkan, kompilator akan menganggapnya 255
begin
  s := 'Hello world';
  writeln(s);
end.

Pada kompilator Pascal yang lebih baru dikenal pula tipe data ANSI-string yang dapat menyimpan karakter lebih banyak.

Dalam bahasa C tidak ada tipe data khusus untuk menyimpan untaian. Untaian biasanya disimpan sebagai larik dari karakter-karakter. Berbeda dengan bahasa Pascal, untaian 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 untaian:

#include <stdio.h>
int main(){
  char s[100]; /* membuat untaian dengan panjang maksimum 99 karakter, karena karakter terakhir harus null */
  s = "Hello world";
  printf("%s\n", s);
}

Bahasa C++

[sunting | sunting sumber]

Bahasa C++ merupakan turunan dari bahasa C sehingga representasi untaian sebagai larik karakter masih berlaku. Namun bahasa C++ juga menyediakan tipe data untaian yang terdapat dalam C++ Standard Template Library (STL).

Contoh kode C++ yang menggunakan tipe data untaian pada STL:

#include <string>
#include <iostream>
using namespace std;
int main(){
  string s;  //panjang maksimum tidak perlu didefinisikan
  s = "Hello world";
  cout<<s<<endl;
}

Bahasa PHP

[sunting | sunting sumber]

Di PHP, untaian adalah kumpulan dari karakter, bilangan, spasi, dan yang lainnya yang berada dalam tanda petik. Di bawah ini semuanya adalah untaian:

  • '9 Januari 2009 '
  • '1.000.000'
  • "satu juta"
  • 'Belajar PHP'

Contoh Penggunaan Untaian di PHP

//mendefinisikan untaian
$kegiatan = 'Belajar PHP';
$tempat = 'wikipedia';
//Strings Concatenation
echo $kegiatan." di ".$tempat;

Bahasa Python

[sunting | sunting sumber]

Pada bahasa python, untaian diapit dengan tanda kutip tunggal maupun ganda. Contoh Penggunaan Untaian di Python

#mendefinisikan untaian
string1 = 'halo dunia'
string2 = "ini string pada bahasa python"

#keluaran untaian
print(string1)
print(string2)

#menggabungkan untaian
print(string1+" "+string2)

Referensi

[sunting | sunting sumber]
  1. ^ "Introduction To Java - MFC 158 G". Diarsipkan dari versi asli tanggal 2016-03-03. String literals (or constants) are called ‘anonymous strings’