Dalam pengaturcaraan komputer, komen ialah teks yang ditulis dalam kod sumber tetapi diabaikan oleh pengkompil atau penterjemah. Ia digunakan untuk menyediakan kebolehbacaan kod dengan menerangkan kod dan fungsinya kepada seseorang yang membaca kod selain daripada pengkompil atau penterjemah. Mereka tidak dilaksanakan dan tidak menjejaskan fungsi keseluruhan program; ia hanya memberikan panduan kepada pengaturcara. Setiap bahasa pengaturcaraan mempunyai sintaks yang berbeza untuk menyatakan komen. Berikut adalah beberapa contoh -
C/C++ - Dalam C atau C++, ulasan satu baris bermula dengan "//" dan komen berbilang baris disertakan dalam "/*" dan "*/".
// Single-lined comment /* Multi- lined comment */
Java - Di Java, komen satu baris bermula dengan "//" dan komen berbilang baris disertakan dalam "/*" dan "*/".
// Single-lined comment /* Multi- lined comment */
Python - Dalam Python, komen satu baris bermula dengan #, dan petikan tiga kali boleh digunakan untuk menulis rentetan berbilang baris tanpa pembolehubah yang ditetapkan.
< /里># Single-lined comment ''' Multi- lined comment '''
Javascript - Dalam Javascript, komen satu baris bermula dengan "//" dan komen berbilang baris disertakan dalam "/*" dan "*/".
// Single-lined comment /* Multi- lined comment */
Diberi tali. Menyemak sama ada rentetan ialah ulasan dalam C++.
Input: ‘/hello world */’
Output: FALSE
Penjelasan - Rentetan input tidak bermula dengan // dan juga tidak disertakan dengan /* dan */. Jadi rentetan itu bukan ulasan dalam C++.
Input: ‘//hello world */’
Output: TRUE
Arahan - Rentetan input bermula dengan //. Oleh itu, ia adalah anotasi dalam C++.
Komen satu baris hanya menjangkau satu baris dan boleh dikenal pasti dalam C++ dengan "//" di hadapan ulasan, iaitu ulasan satu baris dalam C++ sentiasa bermula dengan "//". Jadi, untuk menyemak komen satu baris dalam rentetan yang diberikan, kami mengambil dua aksara pertama dalam rentetan dan semak sama ada ia adalah "//", kemudian rentetan itu boleh dipanggil ulasan baris tunggal tidak kira apa selepas "" //' watak.
procedure isComment (string) if string[0] == ‘/’ and string[1] == ‘/’ ans = TRUE end if ans = FALSE end procedure
Berikut ialah pelaksanaan C++ bagi kaedah di atas.
Dalam program di bawah, kami menyemak dua aksara pertama rentetan input untuk menyemak komen satu baris.
#include <iostream> #include <string> using namespace std; // Function to check if the string is a single-lined comment bool isComment(string str){ // Single-lined comment if first two characters are '/' if (str[0] == '/' && str[1] == '/') { return true; } return false; } int main(){ string input = "/hello world */"; cout << "Input String: "<< input << endl; if (isComment(input)) { cout << "The input string is a comment." << endl; } else { cout << "The input string is not a comment." << endl; } return 0; }
Apabila anda menyusun atur cara di atas, ia akan menghasilkan output berikut -
Input String: /hello world */ The input string is not a comment.
Kerumitan masa - O(1), sama seperti dalam fungsi isComment() kita menyemak dua aksara pertama menggunakan indeks yang mengambil masa yang tetap.
Kerumitan ruang - O(1) kerana tiada ruang tambahan digunakan.
Komen berbilang baris merangkumi berbilang baris dan diiktiraf dalam C++ sebagai kurungan "/*" dan "*/". Jadi, untuk menyemak komen berbilang baris dalam rentetan tertentu, kami mengambil dua aksara pertama dalam rentetan dan semak sama ada ia "/*", dan semak dua aksara terakhir dan semak sama ada ia "*/", Kemudian rentetan itu boleh dipanggil komen berbilang baris, apa sahaja antara '/*' dan '*/'.
Input: ‘/* hello world */’
Output: TRUE
Penjelasan - Rentetan input terkandung dalam "/*" dan "*/", jadi ia adalah rentetan dalam C++.
procedure isComment (string) n = string.length if (string[0] == ‘/’ and string[1] == ‘*’) and (string[n - 1] == ‘/’ and string[n - 2] == ‘*’) ans = TRUE end if ans = FALSE end procedure
Dalam program di bawah, kami menyemak sama ada rentetan input terkandung antara "/*" dan "*/".
#include <iostream> #include <string> using namespace std; // Function to check for multi-lined comment bool isComment(string str){ int n = str.length(); // Multi-lined comment if first two characters are '/*' and last two characters are '*/' if ((str[0] == '/' && str[1] == '*') && (str[n-1] == '/' && str[n-2] == '*')) { return true; } return false; } int main(){ string input = "/* hello world */"; cout << "Input String: " << input << endl; if (isComment(input)) { cout << "The input string is a comment." << endl; } else { cout << "The input string is not a comment." << endl; } return 0; }
Apabila anda menyusun atur cara di atas, ia akan menghasilkan output berikut -
Input String: /* hello world */ The input string is a comment.
Kerumitan Masa - O(1), sama seperti dalam fungsi isComment() kami menggunakan pengindeksan yang mengambil masa yang berterusan untuk menyemak dua aksara pertama dan dua aksara terakhir.
Kerumitan ruang - O(1) kerana tiada ruang tambahan digunakan.
Untuk rentetan tertentu, untuk menentukan sama ada ulasan itu adalah ulasan satu baris atau ulasan berbilang baris, kami menggabungkan dua kaedah di atas, dengan ulasan satu baris bermula dengan "//" dan ulasan berbilang baris ialah disertakan dalam "/*" dan "* /"tengah.
Input: ‘/&* hello world */’
Output: Not a comment
procedure isComment (string) n = string.length if string[0] == ‘/’ and string[1] == ‘/’ ans = 1 else if (string[0] == ‘/’ and string[1] == ‘*’) and (string[n - 1] == ‘/’ and string[n - 2] == ‘*’) ans = 2 end if ans = 0 end procedure
Dalam program di bawah, diberi rentetan, kami menyemak sama ada ia adalah ulasan satu baris, ulasan berbilang baris, atau bukan ulasan sama sekali
#include <iostream> #include <string> using namespace std; // FUunction to check if the input string is comment int isComment(string str){ int n = str.length(); // SIngle-lined comment if starting with '//' if (str[0] == '/' && str[1] == '/') { return 1; } // Multi-lined comment if enclosed in '/*' and '*/' else if ((str[0] == '/' && str[1] == '*') && (str[n-1] == '/' && str[n-2] == '*')) { return 2; } // Not a comment return 0; } int main(){ string input = "// hello world */"; cout << "Input String: " << input << endl; if (isComment(input) == 1) { cout << "The input string is a single-lined comment." << endl; } else if (isComment(input) == 2) { cout << "The input string is a multi-lined comment." << endl; } else { cout << "The input string is not a comment." << endl; } return 0; }
Input String: // hello world */ The input string is a single-lined comment.
Kerumitan masa - O(1), sama seperti dalam fungsi isComment() kita menyemak penentu ulasan menggunakan indeks yang mengambil masa yang tetap.
Kerumitan ruang - O(1) kerana tiada ruang tambahan digunakan.
Untuk meringkaskan, bahasa pengaturcaraan yang berbeza mempunyai sintaks yang berbeza untuk menyatakan komen. Dalam pendekatan di atas, anotasi dalam C atau C++ telah dikenal pasti dengan kerumitan masa dan ruang O(1).
Atas ialah kandungan terperinci Menyemak sama ada rentetan yang diberikan ialah ulasan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!