Trong lập trình, tất cả mọi thứ được đại diện bởi số. Một lá thư là một số, một từ là nhóm các con số, màu sắc là một nhóm ba con số (một đại diện cho số lượng màu Red, khác một trong xanh, khác một trong những Blue.
Để chương trình là để giải quyết các con số.
Phần 1 - số, mảng số
Để có một nơi mà chúng ta có thể lưu trữ một số (những gì được quy vào như "biến"), chúng tôi làm:
PHP Code:
new numberHolder
numberHolder là nhãn hiệu của nó. Nó nên được đặt tên tùy thuộc vào dữ liệu mà nó sẽ tổ chức.
Đó được gọi là "khai báo một biến"
Để lưu trữ một số trong biến của chúng tôi, chúng tôi làm:
PHP Code:
numberHolder = 5
Để có một vị trí cho một nhóm các con số (những gì được gọi là một "mảng"), chúng tôi làm:
PHP Code:
new numberGroupHolder[x]
Nhóm này sẽ có x vị trí. Một cho mỗi số. Để truy cập đến từng vị trí chúng tôi làm:
PHP Code:
numberGroupHolder[0]
0 vị trí đầu tiên. Người cuối cùng là x-1. Vì vậy, để lưu trữ một màu sắc, chúng ta sẽ làm gì:
PHP Code:
PHP Code:
new color[3]
color[0] = 0
color[1] = 100
color[2] = 255
PHP Code:
new color[3]
color = {0,100,255}
PHP Code:
new color[3] = {0,100,255}
PHP Code:
color[0] = color[0] - 10
color[1] = color[1] - 10
color[2] = color[2] - 10
Chúng ta có thể, thay vào đó, lưu trữ thủ tục này trong một đoạn mã gọi là "hàm":
PHP Code:
darkenColor(anyColor[3])
{
anyColor[0] = anyColor[0] - 10
anyColor[1] = anyColor[1] - 10
anyColor[2] = anyColor[2] - 10}
darkenColor là một nhãn hiệu cho hàm mà chúng ta nên đặt tên tùy thuộc vào những gì nó làm
AnyColor là một nhãn hiệu cho các biến của nó cho vào các hàm khi được sử dụng bên trong hàm (không liên quan đến nhãn gốc của biến)
Trong một hàm:
Giữa ngoặc chúng tôi có đối số của nó (các biến mà chúng ta muốn nó có để nó có thể làm công việc của mình). Một trong trường hợp này.
Giữa dấu ngoặc chúng tôi có phần thân của hàm.
Vì vậy, để tối một số màu sắc chúng ta sẽ làm gì:
PHP Code:
new someColor[3] = {100,100,100}
new otherColor[3] = {50,100,150}
new anotherColor[3] = {255,30,233}
darkenColor(someColor)
darkenColor(otherColor)
darkenColor(anotherColor)
sau đó:
someColor sẽ có giá trị 90,90,90.
otherColor sẽ có giá trị 40,90,140.
anotherColor sẽ có giá trị 245,20,223.
Nhưng, hàm của chúng tôi có một vấn đề. Nếu một phần của màu sắc là thấp hơn 10, nó sẽ trở thành tiêu cực. Điều này là sai vì một phần màu sắc nên được từ 0 đến 255.
Để giải quyết điều này chúng ta cần phải xử lý một điều kiện. Với một "tuyên bố có điều kiện":
PHP Code:
darkenColor(anyColor[3])
{
anyColor[0] = anyColor[0] - 10
anyColor[1] = anyColor[1] - 10
anyColor[2] = anyColor[2] - 10
if(anyColor[0] < 0)
{
anyColor[0] = 0
}
if(anyColor[1] < 0)
{
anyColor[1] = 0
}
if(anyColor[2] < 0)
{
anyColor[2] = 0
}
}
Nếu bất kì giá trị nào đó nhỏ hơn 0 thì sẽ được gán bằng 0
("AnyColor [x] = 0" sẽ xảy ra khi "AnyColor [x] <0")
hàm của chúng tôi là một chút không thực tế. Chúng ta không thể nói cho anh ta "độ sáng thay đổi" yếu tố. Và nó được cho là chỉ làm tối hơn.
Vì vậy, cho phép làm cho nó thực tế hơn.
PHP Code:
changeColorLuminosity(anyColor[3],factor)
{
anyColor[0] = anyColor[0] + factor
anyColor[1] = anyColor[1] + factor
anyColor[2] = anyColor[2] + factor
if(anyColor[0] < 0)
{
anyColor[0] = 0
}
if(anyColor[1] < 0)
{
anyColor[1] = 0
}
if(anyColor[2] < 0)
{
anyColor[2] = 0
}
}
Nhưng, bây giờ, chúng tôi có vấn đề mà nó có thể làm cho một phần màu lớn hơn 255. Vì vậy, chúng ta phải xử lý nó
PHP Code:
changeColorLuminosity(anyColor[3],factor)
{
anyColor[0] = anyColor[0] + factor
anyColor[1] = anyColor[1] + factor
anyColor[2] = anyColor[2] + factor
if(anyColor[0] < 0)
{
anyColor[0] = 0
}
if(anyColor[1] < 0)
{
anyColor[1] = 0
}
if(anyColor[2] < 0)
{
anyColor[2] = 0
}
if(anyColor[0] > 255)
{
anyColor[0] = 255
}
if(anyColor[1] > 255)
{
anyColor[1] = 0
}
if(anyColor[2] > 255)
{
anyColor[2] = 0
}
}
PHP Code:
changeColorLuminosity(anyColor[3],factor)
{
anyColor[0] = anyColor[0] + factor
anyColor[1] = anyColor[1] + factor
anyColor[2] = anyColor[2] + factor
if(anyColor[0] < 0)
{
anyColor[0] = 0
}
else if (anyColor[0] > 255)
{
anyColor[0] = 255
}
if(anyColor[1] < 0)
{
anyColor[1] = 0
}
else if (anyColor[1] > 255)
{
anyColor[1] = 255
}
if(anyColor[2] < 0)
{
anyColor[2] = 0
}
else if (anyColor[2] > 255)
{
anyColor[2] = 255
}
}
PHP Code:
if(anyColor[x] < 0)
{
anyColor[x] = 0
}
else if (anyColor[x] > 255)
{
anyColor[x] = 255
}
Nếu một phần màu sắc là tiêu cực làm cho nó vô giá trị. Nếu nó không phải là tiêu cực và nó lớn hơn 255 làm cho nó 255.
Phần 2 - Các nhân vật, mảng ký tự (chuỗi)
by Bugsy
chuỗi
Một chuỗi được định nghĩa là một nhóm của 2 hoặc nhiều ký tự liền kề nhau. Lập trình , một chuỗi chỉ là một mảng của các con số được biểu diễn như là một toàn thể. Mỗi ký tự trong bộ ký tự ASCII được đại diện bởi một số nguyên trong khoảng từ 0 đến 255. Vì lợi ích của hướng dẫn này chúng tôi sẽ chỉ xem xét chữ cái mặc dù bộ ký tự ASCII có rất nhiều ký tự khác ( bao gồm cả số và ký tự đặt biệt). một chuổi phải luôn được kết thúc bằng giá trị null ( giá trị ascii 0) . Khi một ký tự null được tìm thấy trong chuỗi nó được coi là kết thúc của một chuỗi . Khi bạn xác định một mảng để chứa một chuỗi, bạn luôn luôn phải thêm 1 vào kích thước của chuỗi mà bạn muốn giữ để phân bổ không gian cho các ký tự null . Ví dụ, Nếu bạn mong muốn giữ từ "word" trong chuỗi của bạn , xác định các mảng như mới szWord [5] . Khi bạn khai báo một mảng, mỗi phần tử trong mảng có giá trị từ 0 (null) theo mặc định , do đó bạn không cần phải tự thiết lập các ký tự cuối cùng là vô giá trị (hoặc 0) . Hãy nhớ rằng các mảng bắt đầu với
một chỉ số từ 0 như vậy và mảng được xác định với kích thước của 5 sẽ được truy cập bằng cách sử dụng . 0 - 4 [0 , 1, 2 , 3, 4 ] .
Ascii Character Set
Xin lưu ý rằng các ký tự chữ hoa và chữ thường được coi là các ký tự khác nhau. Ví dụ, 'a' không bằng 'A'
Giá trị nguyên ký tự ascii:
A-Z dao động 65-90. 65 là 'A' và 90 là 'Z'
a-z khoảng 97-122. 97 là 'a' và 122 là 'z'
Xác định Strings với Code Ví dụ
Giả sử chúng ta muốn xác định một chuỗi và làm cho nó giữ từ "word" hoặc "WORD"
Chúng ta có thể làm điều này bằng 2 cách:
1. Nếu bạn muốn chỉ định một giá trị chuỗi biến của bạn khi xác định nó, bạn không cần phải xác định kích thước.
Trình biên dịch sẽ làm điều này tự động, nó cũng sẽ bao gồm một yếu tố thêm cho các ký tự null ở cuối dòng.
PHP Code:
new szWord[] = "word"
new szWord[] = "WORD"
Dưới đây chúng tôi thiết lập giá trị của szWord [4] đến 0 chỉ cho mục đích trình diễn, mặc dù nó không phải là cần thiết vì các giá trị mặc định là 0 khi nó được định nghĩa.
PHP Code:
new szWord[5]
szWord[0] = 119 //w
szWord[1] = 111 //o
szWord[2] = 114 //r
szWord[3] = 100 //d
szWord[4] = 0 //null .. This is not needed since the default value of each element is 0szWord[0] = 87 //WszWord[1] = 79 //OszWord[2] = 82 //RszWord[3] = 68 //DszWord[4] = 0 //null .. This is not needed since the default value of each element is 0.
//Note that you do not need to memorize the ascii value for every character. You can assign a character to a variable or array element by enclosing
//it in single quotes. Example:
szWord[0] = 'w'
szWord[1] = 'o'
szWord[2] = 'r'
szWord[3] = 'd'
szWord[4] = '^0'
Như đã đề cập ở trên, khi một ký tự null (giá trị 0) được tìm thấy trong mảng, nó được coi là kết thúc của chuỗi.
Để xem nó trong hành động, đây là một ví dụ nhỏ:
PHP Code:
new szWord[] = "alphabet"
szWord[5] = 0 //Set where character 'b' is stored to null. (ascii value of 0)
//It will equal "alpha" instead of "alphabet"
Đoạn code dưới đây sẽ cho phép truy cập vào từng ký tự của một chuổi và kiểm tra nó.
Để làm được điều này thì chúng ta sẽ sử dụng đến vòng lặp For. Cú pháp của nó như sau.
Vòng lặp for sử dụng để lặp trong 1 khoảng xác định (số lần lặp xác định).
Cú pháp:
Mã PHP:
for(<biến đếm> = <giá trị đầu>;<điều kiện lặp>;<biểu thức biến thiên của biến đếm>)
điều kiện lặp: là điều kiện để vòng lặp được thực hiện, nếu điều kiện trả về giá trị TRUE thì lặp, ngược lại thì vòng lặp kết thúc.
biểu thức biến thiên của biến đếm: là biểu thức thể hiện sự biến thiên nhất định của biến đếm trong mỗi lần lặp (++, --, +=, -=,...)
Ví dụ:
Mã PHP:
for(new i = 1; i <= 32; i++)
{
// Lệnh}
//Biến i sẽ chạy từ 1 -> 32 theo chiều tăng dần (i++), khi i vượt quá 32 thì vòng lặp kết thúc.
PHP Code:
new szString[] = "this is a test string"
new iLen = strlen( szString ) //If you know the length you can manually specify it
new iSpaces;
new iLetter_t;//Start at 0 and loop until the index is 1 less than the length since arrays have a 0-based index [0 to len-1]
for ( new i = 0 ; i < iLen ; i++ )
{
if ( szString[i] == ' ' )
iSpaces++
else if ( szString[i] == 't' )
iLetter_t++
//OR
switch ( szString[i] )
{
case ' ': iSpaces++
case 't': iLetter_t++
}
}
Result: Spaces = 4 : Letter 't' = 4
PHP Code:
new szAlphabet[27] //26 letters in the alphabet plus 1 for null terminator
//'a' has a ascii value of 97 so we just add it to our loop index since it is incremented with each pass
for ( new i = 0 ; i < 26 ; i++ )
szAlphabet[i] = i + 97 //Assign ascii value to array and then increment the ascii value variable
//This is what will occur through the loop
//szAlphabet[0] = 97 //a
//szAlphabet[1] = 98 //b
//szAlphabet[2] = 99 //c
//szAlphabet[3] = 100 //d
//...
//szAlphabet[25] = 122 //z
Bạn có thể tạo một mảng các chuỗi. Điều này cũng được biết đến như là một mảng 2 chiều.
PHP Code:
//To define an array of strings that you will assign a value to when defining:
new szString[][] = { "this" , "is" , "an" , "array" , "of" , "strings" }//strings are then accessed via the index of string. example szString[0] = "this", szString[1] = "is"
//If values assigned during run-time (example, for storing player names or steamID's when they connect)
new szString[number of strings][length of longest string]
Có rất nhiều chức năng được xây dựng trong cốt lõi AMX-X mà làm cho nó dễ dàng để thao tác chuỗi. Xem trang hàm
trên trang chủ amxmodx.org.
Part 3 - CẤU TRÚC CƠ BẢN
by Exolent[jNr]
Khái niệm cơ bản
A conditional statement is a statement to decide whether to continue with the block of code.Và && . VD (a==1 && b==2) (a=1 và b=2)
Hoặc || VD (a==1 || b==1) (a=1 hoặc b=1)Example:Code:// x is greater than 0 or less than or equal to 255 x > 0 || x <= 255 // x is greater than 15 and y is less than 10 x > 15 && y < 10 // x is less than 15 // or y is less than 0 and y is greater than -10 x < 15 || y < 0 && y > -10 // x is greater than 16 // and y is greater than 10 or y is less than 0 x > 16 && (y > 10 || y < 0) // a is greater than b and c is less than d and e is less than f a > b && c < d && e < fĐây là một trường hợp đặc biệt mà bạn có thể sử dụng một định dạng khác nhau.
Cái này là "double-sided inequality" sẽ chỉ làm việc nếu nó là một phạm vi cụ thể của các giá trị.Code:// x is greater than 0 and less than or equal to 5 x > 0 && x <= 5 // This can be a double-sided inequality (not the term, but easy to understand) 0 < x <= 5
Nó sẽ không làm việc với một cái gì đó như:
Code:// x is greater than 5 or less than 0 x > 5 || x < 0Báo cáo có điều kiện cũng có thể kiểm tra xem một cái gì đó là không đúng sự thật.! đối diện!= có nghĩa là không bằngCode:// x is not less than 0 !(x < 0) // x is not equal to 0 x != 0Đây có thể trở nên rất phức tạp, và với các "đối diện" nhà điều hành, bạn có thể chuyển đổi các điều kiện.Code:// x is greater than 0 and y is less than 2 x > 0 && y < 2 // the same as above, but with the "opposite" operator !(x <= 0 || y >= 2) // this conditional statement reads as this: // if x <= 0, then it will be false // if y >= 2, then it will be false // otherwise, it will be true because x > 0 and y < 2"If" StatementsMột "If" mệnh đề là một câu lệnh có điều kiện để quyết định có một khối mã sẽ được sử dụng.
Nó rất đơn giản để sử dụng.
Định dạng là:
Code:if( [conditional] ) { // block of code if conditional is true }Cùng với "If" mệnh đề là một "Else IF" và mệnh đề "Else".Code:if( x > 1 ) { // this code will be used if x is greater than 1 }
"Else IF" mệnh đề được sử dụng khi mệnh đề 'IF' đầu tiên là sai.
Nó có định dạng tương tự, ngoại trừ nó có một "khác" trước khi nó.
Code:if( [conditional #1] ) { // conditional #1 is true } else if( [conditional #2] ) { // conditional #1 is false // and conditional #2 is true }"Else" mệnh đề được sử dụng khi tất cả các "Else IF" và "if" báo cáo là sai.vòng lặpCode:if( [conditional #1] ) { // conditional #1 is true } else if( [conditional #2] ) { // conditional #1 is false // and conditional #2 is true } else { // conditional #1 is false // and conditional #2 is false }Có 3 vòng khác nhau mà bạn có thể làm:
- while
- do, while
- for
Danh sách đó được sắp xếp về biến chứng.trong khi điều kiện còn đúng thì tiếp tục vòng lặpFormat:Code:while( [Điều Kiện] ) { // khối mã sẽ được sử dụng }Cách nó hoạt động:
- Kiểm tra điều kiện
- Nếu đúng thì thực thi khối mã , nếu sai thì kết thúc vòng lặp
- Trở lại #1
Vòng lặp "do, while" giống như vòng lặp "while".Sự khác biệt duy nhất là thứ tự mà nó được sử dụng.Format:Code:do { // Khối mã được sử dụng } while( [Điều kiện] ); //dấu chấm phẩy là không cần thiết, trừ khi dấu chấm phẩy được thực thiThe way it works:
- Thực hiện khối mã bên trong
- Kiểm tra điều kiện
- Nếu đúng, sau đó thực hiện các khối mã bên trong; nếu sai, thoát khỏi vòng lặp
- Quay trở lại #2
Vòng lặp "For" là phức tạp hơn so với những người khác.Chúng chủ yếu được sử dụng để đếm từ một số đến khác.
Nó chứa 3 phần: đầu, có điều kiện, tăng.
Ban đầu - Tạo biến để sử dụng cho vòng lặp.
Có điều kiện - tuyên bố có điều kiện để kiểm tra xem các vòng lặp nên tiếp tục.
Tăng - Tăng giá trị của biến đã được tạo ra.
Format:Code:for( [đầu]; [điều kiện]; [tăng] ) //Phải có dấu phẩy { // Khối lệnh }Cách nó hoạt động:
- thực hiện ban đầu
- Nếu có điều kiện là đúng, thực thi mã; nếu sai, thoát khỏi vòng lặp
- Thực hiện khối mã
- thực hiện tăng
- Trở lại #2
Ví dụ đếm từ 1 đến 5:
Code:for( new i = 1; i <= 5; i++ ) // i + + tăng i lên 1 { // Khối lệnh }Ví dụ đếm 10 đến 1:Vòng lặp có thể bị buộc phải bỏ qua các phần của mã và quay trở lại một lần nữa với điều kiện "tiếp tục" điều hành.Code:for( new i = 10; i >= 1; i-- ) // i-- giảm i xuống 1 { // Khối lệnh }
Ví dụ:
Vòng lặp cũng có thể bị buộc phải thoát khỏi ngay cả khi có điều kiện là đúng sự thật.Code:for( new i = 0; i < 4; i++ ) { if( i == 2 ) { continue; } // khối mã chỉ khi i không phải là 2 }
Ví dụ:
Code:for( new i = 0; i < 4; i++ ) { if( i == 2 ) { break; } / / Mã này sẽ chỉ được sử dụng cho khi i là 0 và 1 / / Khi i đạt 2, vòng lặp sẽ thoát / / Do đó, i không bao giờ đạt 3 như các vòng lặp muốn trong điều kiện }"Switch" StatementsSwitch statements được sử dụng khi song sanh với nhiều giá trị khác nhau.Cú pháp:Code:switch( variable ) { case VALUE_1: { // variable is equal to VALUE_1 } case VALUE_2: { // variable is equal to VALUE_2 } case VALUE_3: { // variable is equal to VALUE_3 } }Có một lựa chọn khác sẽ được sử dụng nếu có các giá trị khác là không chính xác.
Part 4 - Mathematical OperatorsCode:switch( variable ) { case VALUE_1: { // variable is equal to VALUE_1 } case VALUE_2: { // variable is equal to VALUE_2 } case VALUE_3: { // variable is equal to VALUE_3 } default: { // variable is not VALUE_1, VALUE_2, or VALUE_3 } }
by Exolent[jNr]
Cách sử dụng cơ bản
Chúng ta đều biết các biểu thức toán học cơ bản:
- Cộng
- Trừ
- Nhân
- Chia
Những có thể dễ dàng được sử dụng trong chương trình.Code:new x = 1, y = 4; // Addition x = y + 1; // x now equals 5 // Subtraction y = x - 2; // y now equals 2 // Multiplication x = y * 2; // x now equals 4 // Division y = 12 / x; // y now equals 3Trong lập trình, có những biểu thức hơn nữa như.
- Lấy dư
- Dịch Bit
Phép chia lấy dư sẽ trả về số dư của phép chiaVí dụ:Code:25 / 4 = 6 R 1 // That means that 4 goes into 25, 6 times evenly, // and there is a remainder of 1 left over. new x = 25 % 4; // x now equals 1 x = 113 % 100; // x now equals 13Đối với thông tin về bit chuyển dịch, xem ở tutorial.IncrementsVariables may need to have values added, subtracted, or any other mathematical operation done to their original value.This can simply be coded like this:Code:new x = 5; x = x + 1; // x was incremented by 1, and now equals 6 x = x * 2; // x was mulitplied by 2, and now equals 12 x = x / 4; // x was divided by 4, and now equals 3 x = x - 2; // x was decremented by 2, and now equals 1There are shorthand operations for code such as this.Code:variable (operator)= (value); // This will perform (operator) to (variable) with (value).Example:Code:new x = 5; x *= 10; // x now equals 50 x -= 10; // x now equals 40 x /= 2; // x now equals 20 x += 4; // x now equals 24There is a special case when using "+= 1" and "-= 1".Code:new x = 1; x += 1; // x now equals 2 x++; // x now equals 3 // ++ is the equivalent of += 1 // it can even be placed before the variable ++x; // There is a difference in ++variable and variable++; // ++variable increments the variable before it is used, // and variable++ increments the variable after it is used. new x = 1; new y = x++; // x = 2, y = 1 // x was increased to 2 after it was assigned to y x = 1; y = ++x; // x = 2, y = 2 // x was increased to 2 before it was assigned to yThe same goes for -= 1. It is used with --.Code:new x = 1; new y = --x; // x = 0, y = 0 x = 10; y = x--; // x = 9, y = 10
0 nhận xét:
Post a Comment