Thứ Ba, 19 tháng 5, 2015

Task 8







Task 7

1.Mảng là gì? Phần tử mảng là gì?
Mảng là một tập hợp các phần tử dữ liệu có cùng kiểu. Mỗi phần tử được lưu trữ ở các vị trí kế tiếp nhau trong bộ nhớ chính. Những phần tử này được gọi là phần tử mảng.

2.Khai báo một mảng?
-Một mảng có một vài đặc tính riêng biệt và phải được khai báo khi sử dụng chúng. Những đặc tính này bao gồm:
 -Lớp lưu trữ
Kiểu dữ liệu của các phần tử mảng.
Tên mảng – xác định vị trí phần tử đầu tiên của mảng.
  -Kích thước mảng - một hằng số có giá trị nguyên dương.

-Một mảng được khai báo giống như cách khai báo một biến, ngoại trừ tên mảng được theo sau bởi một hoặc nhiều biểu thức, được đặt trong dấu ngoặc vuông [] xác định chiều dài của mảng. Cú pháp tổng quát khai báo một mảng như sau:

      lớp_lưu_trữ    kiểu_dữ_liệu   tên_mảng[biểu_thức_kích_thước]

-Ở đây, biểu_thức_kích_thước là một biểu thức xác định số phần tử trong mảng và phải định ra một trị nguyên dương. Lớp_lưu_trữ là một tùy chọn. Mặc định lớp automatic được dùng cho mảng khai báo bên trong một hàm hoặc một khối lệnh, và lớp external được dùng cho mảng khai báo bên ngoài một hàm. Vì vậy mảng player được khai báo như sau:

      int player[11];

-Nên nhớ rằng, trong khi khai báo mảng, kích thước của mảng sẽ là 11, tuy nhiên các chỉ số của từng phần tử bên trong mảng sẽ là từ 0 đến 10.

-Các qui tắc đặt tên mảng là giống với qui tắc đặt tên biến. Một tên mảng và một tên biến không được giống nhau, nó dẫn đến sự nhập nhằng. Nếu một sự khai báo như vậy xuất hiện trong chương trình, trình biên dịch sẽ hiển thị thông báo lỗi.

3 Các quy tắc với mảng?
  -Tất cả các phần tử của một mảng có cùng kiểu. Điều này có nghĩa là, nếu một mảng được khai báo kiểu int, nó không thể chứa các phần tử có kiểu khác.
 -Mỗi phần tử của mảng có thể được sử dụng bất cứ nơi nào mà một biến được cho phép hay được yêu cầu.
 -Một phần tử của mảng có thể được tham chiếu đến bằng cách sử dụng một biến hoặc một biểu thức nguyên. Sau đây là các tham chiếu hợp lệ:

player[i]; /*Ở đó i là một biến, tuy nhiên cần phải chú ý rằng i nằm trong miền giới hạn của chỉ số đã được khai báo cho mảng player*/
player[3] = player[2] + 5;
player[0] += 2;
player[i / 2 + 1];

-     Kiểu dữ liệu của mảng có thể là int, char, float, hoặc double.

4.  Quản lý mảng trong C?
- Một mảng được “đối xử” khác với một biến trong C. Thậm chí hai mảng có cùng kiểu và kích thước cũng không thể tương đương nhau. Hơn nữa, không thể gán một mảng trực tiếp cho một mảng khác. Thay vì thế, mỗi phần tử mảng phải được gán riêng lẻ tương ứng với từng phần tử của mảng khác. Các giá trị không thể được gán cho toàn bộ một mảng, ngoại trừ tại thời điểm khởi tạo. Tuy nhiên, từng phần tử không chỉ có thể được gán trị mà còn có thể được so sánh.

      int player1[11], player2[11];
      for (i = 0; i < 11; i++)
           player1[i] = player2[i];

Tương tự, cũng có thể có kết quả như vậy bằng việc sử dụng các lệnh gán riêng lẻ như sau:

      player1[0] = player2[0];
player1[1] = player2[1];
...
player1[10] = player2[10];

5.  cách khởi tạo một mảng:
-Các mảng không được khởi tạo tự động, trừ khi mỗi phần tử mảng được gán một giá trị riêng lẻ. Không nên dùng các mảng trước khi có sự khởi tạo thích hợp. Điều này là bởi vì không gian lưu trữ của mảng không được khởi tạo tự động, do đó dễ gây ra kết quả không lường trước. Mỗi khi các phần tử của một mảng chưa khởi tạo được sử dụng trong các biểu thức toán học, các giá trị đã tồn tại sẵn trong ô nhớ sẽ được sử dụng, các giá trị này không đảm bảo rằng có cùng kiểu như khai báo của mảng, trừ khi các phần tử của mảng được khởi tạo một cách rõ ràng. Điều này đúng không chỉ cho các mảng mà còn cho các biến thông thường.
-Trong đoạn mã lệnh sau, các phần tử của mảng được gán giá trị bằng các dùng vòng lặp for.

      int ary[20], i;
      for(i=0; i<20; i++)
           ary[i] = 0;

Khởi tạo một mảng sử dụng vòng lặp for có thể được thực hiện với một hằng giá trị, hoặc các giá trị được sinh ra từ một cấp số cộng.

6. Các mảng chuỗi/ký tự?
- Một chuỗi có thể được khai báo như là một mảng ký tự, và được kết thúc bởi một ký tự NULL. Mỗi ký tự của chuỗi chiếm 1 byte, và ký tự cuối cùng của chuỗi luôn luôn là ký tự ‘\0’. Ký tư ‘\0’ được gọi là ký tự null. Nó là một mã thoát (escape sequence)  tương tự như ‘\n’, thay thế cho ký tự có giá trị 0. Vì ‘\0’ luôn là ký tự cuối cùng của một chuỗi, nên các mảng ký tự phải có nhiều hơn một ký tự so với chiều dài tối đa mà chúng quản lý. Ví dụ, một mảng ary quản lý một chuỗi 10 ký tự phải được khai báo như sau:

      char ary[11];
-Vị trí thêm vào được sử dụng để lưu trữ ký tự null. Nên nhớ rằng ký tự kết thúc (ký tự null) là rất quan trọng.
-Các giá trị chuỗi có thể được nhập vào bằng cách sử dụng hàm scanf(). Với chuỗi ary được khai báo ở trên, mã lệnh nhập sẽ như sau:
      scanf(“%s”, ary);

7. Thế nào là mảng 2 chiều?
Các mảng có thể có nhiều hơn một chiều. Các mảng đa chiều giúp dễ dàng trình bày các đối tượng đa chiều, chẳng hạn một đồ thị với các dòng và cột hay tọa độ màn hình của máy tính. Các mảng đa chiều được khai báo giống như các mảng một chiều, ngoại trừ có thêm một cặp dấu ngoặc vuông [] trong trường hợp mảng hai chiều. Một mảng ba chiều sẽ cần ba cặp dấu ngoặc vuông,... Một cách tổng quát, một mảng đa chiều có thể được biểu diễn như sau:

      storage_class data_type ary[exp1][exp2]....[expN];

Ở đó, ary là một mảng có lớp là storage_class, kiểu dữ liệu là data_type, và exp1, exp2,..... , expN là các biểu thức nguyên dương xác định số phần tử của mảng được kết hợp với mỗi chiều.

7.  Khởi tạo mảng đa chiều?
Khai báo mảng đa chiều có thể kết hợp với việc gán các giá trị khởi tạo. Cần phải cẩn thận lưu ý đến thứ tự các giá trị khởi tạo được gán cho các phần tử của mảng (chỉ có mảng external và static có thể được khởi tạo). Các phần tử trong dòng đầu tiên của mảng hai chiều sẽ được gán giá trị trước, sau đó đến các phần tử của dòng thứ hai, … Hãy xem sự khai báo mảng sau:

      int ary[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12};

Kết quả của phép khai báo trên sẽ như sau:

ary[0][0] = 1    ary[0][1] = 2    ary[0][2] = 3 ary[0][3]= 4
ary[1][0] = 5    ary[1][1] = 6    ary[1][2] = 7 ary[1][3] = 8
ary[2][0] = 9    ary[2][1] = 10   ary[2][2] = 11    ary[2][3] = 12

Chú ý rằng chỉ số thứ 1 chạy từ 0 đến 2 và chỉ số thứ hai chạy tử 0 đến 3. Một điểm cần nhớ là các phần tử của mảng sẽ được lưu trữ ở những vị trí kế tiếp nhau trong bộ nhớ. Mảng ary ở trên có thể xem như là một mảng của 3 phần tử, mỗi phần tử là một mảng của 4 số nguyên, và sẽ xuất hiện như sau:

8.Mảng hai chiều và chuỗi?
- một chuỗi có thể được biểu diễn bằng mảng một chiều, kiểu ký tự. Mỗi ký tự trong chuỗi được lưu trữ trong - - một phần tử của mảng. Mảng của chuỗi có thể được tạo bằng cách sử dụng mảng ký tự hai chiều. Chỉ số bên trái xác định số lượng chuỗi, và chỉ số bên phải xác định chiều dài tối đa của mỗi chuỗi. Ví dụ bên dưới khai báo một mảng chứa 25 chuỗi và mỗi chuỗi có độ dài tối đa 80 ký tự kể cả ký tự null.
    char str_ary[25][80];




VD + fixbug:








Thứ Bảy, 16 tháng 5, 2015

Task 4

1. biểu thức là gì?
Một biểu thức là tổ hợp các toán tử và toán hạng. Toán tử thực hiện các thao tác như cộng,
trừ, so sánh v.v… Toán hạng là những biến hay những giá trị mà các phép toán được thực hiện
trên nó. Trong ví dụ a + b, “a” và “b” là toán hạng và “+” là toán tử. Tất cả kết hợp lại là một
biểu thức.
ví dụ về biểu thức :
2
x
3 + 7
2 × y + 5
2 + 6 × (4 – 2)
z + 3 × (8 – z)
2. toán tử gán là gì?
Trước khi nghiên cứu các toán tử khác, ta hãy xét toán tử gán (=). Ðây là toán tử thông dụng nhất cho mọi ngôn ngữ và mọi người đều biết. Trong C, toán tử gán có thể được dùng cho bất kỳ biểu thức C hợp lệ. Dạng thức chung cho toán tử gán là:
Tên biến = biểu thức;
3. thế nào là gán liên tiếp?
Nhiều biến có thể được gán cùng một giá trị trong một câu lệnh đơn. Việc này thực hiện qua cú pháp gán liên tiếp. Ví dụ:
a = b = c =10;
Dòng mã trên gán giá trị 10 cho a, b,và c. Tuy nhiên, việc này không thể thực hiện lúc khai báo biến.
Ví dụ,
int a = int b = int c= 0;
Câu lệnh trên phát sinh lỗi vì sai cú pháp.
4.biểu thức số học là gì?
Các phép toán thường được thực hiện theo một thứ tự cụ thể (hoặc riêng biệt) để cho ra giá trị cuối cùng. Thứ tự này gọi là độ ưu tiên (sẽ nói đến sau).
Các biểu thức toán học trong C được biểu diễn bằng cách sử dụng toán tử số học cùng với các toán
hạng dạng số và ký tự. Những biểu thức này gọi là biểu thức số học (Arithmetic Expressions). Ví dụ về biểu thức số học là :
a * (b+c/d)/22;
++i % 7;
5 + (c = 3+8);
Như chúng ta thấy ở trên, toán hạng có thể là hằng, biến hay kết hợp cả hai. Hơn nữa, một biểu thức có thể là sự kết hợp của nhiều biểu thức con. Chẳng hạn, trong biểu thức đầu, c/d là một biểu thức con, và trong biểu thức thứ ba c = 3+8 cũng là một biểu thức con.
5. Biểu thức dạng hỗn hợp & Chuyển đổi kiểu là gì?
Một biểu thức dạng hỗn hợp là một biểu thức mà trong đó các toán hạng của một toán tử thuộc về nhiều
kiểu dữ liệu khác nhau. Những toán hạng này thông thường được chuyển về cùng kiểu với toán hạng có
kiểu dữ liệu lớn nhất. Điều này được gọi là tăng cấp kiểu. Sự phát triển về kiểu dữ liệu theo thứ tự sau :
char < int <long <float <double
Chuyển đổi kiểu tự động được trình bày dưới đây nhằm xác định giá trị của biểu thức:
a. char và short được chuyển thành int và float được chuyển thành double.
b. Nếu có một toán hạng là double, toán hạng còn lại sẽ được chuyển thành double, và kết quả là
double.
c. Nếu có một toán hạng là long, toán hạng còn lại sẽ được chuyển thành long, và kết quả là long.
d. Nếu có một toán hạng là unsigned, toán hạng còn lại sẽ được chuyển thành unsigned và kết quả cũng là unsigned.
e. Nếu tất cả toán hạng kiểu int, kết quả là int.
Ngoài ra nếu một toán hạng là long và toán hạng khác là unsigned và giá trị của kiểu unsigned không thể biểu diễn bằng kiểu long. Do vậy, cả hai toán hạng được chuyển thành unsigned long.
Sau khi áp dụng những quy tắc trên, mỗi cặp toán hạng có cùng kiểu và kết quả của mỗi phép tính sẽ cùng kiểu với hai toán hạng.
6.thế nào là Ép kiểu (Casts)
Thông thường, ta nên đổi tất cả hằng số nguyên sang kiểu float nếu biểu thức bao gồm những phép
tính số học dựa trên số thực, nếu không thì vài biểu thức có thể mất đi giá trị thật của nó.Ta xem ví dụ:
int x,y,z;
x = 10;
y = 100;
z = x/y;
Trong trường hợp này, z sẽ được gán 0 khi phép chia diễn ra và phần thập phân (0.10) sẽ bị cắt bỏ.Do đó một biểu thức có thể được ép thành một kiểu nhất định. Cú pháp chung của cast là: (kiểu dữ liệu) biểu thức
Ví dụ, để đảm bảo rằng biểu thức a/b, với a và b là số nguyên, cho kết quả là kiểu float, dòng mã sau được viết:
(float) a/b;
Ép kiểu có thể áp dụng cho các giá trị hằng, biểu thức hay biến, ví dụ:
(int) 17.487;
(double) (5 * 4 / 8);
(float) (a + 7);
Trong ví dụ thứ hai, toán tử ép kiểu không đạt mục đích của nó bởi vì nó chỉ thực thi sau khi toàn biểu thức trong dấu ngoặc đã được tính. Biểu thức 5 * 4 / 8 cho ra giá trị là 2 (vì nó có kiểu là số nguyên nên đã cắt đi phần thập phân), vì vậy, giá trị kết quả với kiểu double cũng là 2.0.
Ví dụ:
int i = 1, j = 3;
x = i / j; /* x = 0.0 */
x = (float) i/(float) j; /* x = 0.33 */
7.thế nào là thứ tự ưu tiên của các biểu thức con?
Những biểu thức phức tạp có thể chứa những biểu thức nhỏ hơn gọi là biểu thức con. C không xác
định thứ tự mà các biểu thức con được lượng giá. Một biểu thức sau:
a * b /c + d *c;
bảo đảm rằng biểu thức con a * b/c và d*c sẽ được tính trước phép cộng. Hơn nữa, quy tắc từ trái sang phải cho phép toán nhân và chia bảo đảm rằng a sẽ được nhân với b và sau đó sẽ chia cho c. Nhưng không có quy tắc xác định hoặc a*b /c được tính trước hay sau d*c. Tùy chọn này là ở người thiết kế trình biên dịch quyết định. Quy tắc trái sang phải hay ngược lại chỉ áp dụng cho một chuỗi toán tử cùng độ ưu tiên. Cụ thể, nó áp dụng cho phép nhân và chia trong a*b/c. Nhưng nó không áp dụng cho
toán tử + vì đã khác cấp.Bởi vì không thể xác định thứ tự tính toán các biểu thức con, do vậy, ta không nên dùng các biểu thức nếu giá trị biểu thức phụ thuộc vào thứ tự tính toán các biểu thức con . Xét ví dụ sau:
a * b + c * b++ ;
Có thể trình biên dịch này tính giá trị mục bên trái trước và dùng cùng giá trị b cho cả hai biểu thức con. Nhưng trình biên dịch khác lại tính giá trị mục bên phải và tăng giá trị b trước khi tính giá trị mục bên trái.
8. thế nào là thứ tự ưu tiên giữa những toán tử so sánh (toán tử quan hệ)???
Ta đã thấy trong phần trước một số toán tử số học có độ ưu tiên cao hơn các toán tử số học khác.
Riêng với toán tử so sánh, không có thứ tự ưu tiên giữa các toán tử và chúng được ước lượng từ trái sang phải.
9. thế nào là thứ tự ưu tiên giữa những toán tử luận lý???
thứ tự :1 2 3
toán tử:1(NOT), 2(AND), 3(OR)
Ðiều kiện này được tính như sau:
1. False OR True AND [NOT False] AND True
NOT có độ ưu tiên cao nhất.
2. False OR True AND [True AND True]
Ở đây, AND là toán tử có độ ưu tiên cao nhất và những toán tử có cùng ưu tiên được tính từ phải
sang trái.
3. False OR [True AND True]
4. [False OR True]
5. True
10. khi nào dùng dấu ngoặc đơn???
Thứ tự ưu tiên của các toán tử có thể thay đổi bởi các dấu ngoặc đơn. Khi đó, chương trình sẽ tính toán các phần dữ liệu trong dấu ngoặc đơn trước.
 *Khi một cặp dấu ngoặc đơn này được bao trong cặp khác, việc tính toán thực hiện trước tiên tại
cặp dấu ngoặc đơn trong cùng nhất, rồi đến dấu ngoặc đơn bên ngoài.
*Nếu có nhiều bộ dấu ngoặc đơn thì việc thực hiện sẽ theo thứ tự từ trái sang phải.

Task 2

1. làm thế nào để khai báo một biến?
Để có thể sử dụng một biến trong C++, đầu tiên chúng ta phải khai báo nó, ghi rõ nó là kiểu dữ liệu nào. Chúng ta chỉ cần viết tên kiểu (như int, short, float…) tiếp theo sau đó là một tên biến hợp lệ. Ví dụ
int a;
float mynumber;
Dòng đầu tiên khai báo một biến kiểu int với tên là a. Dòng thứ hai khai báo một biến kiểu float với tên mynumber. Sau khi được khai báo, các biến trên có thể được dùng trong phạm vi của chúng trong chương trình.
Nếu bạn muốn khai báo một vài biến có cùng một kiểu và bạn muốn tiết kiệm công sức viết bạn có thể khai báo chúng trên một dòng, ngăn cách các tên bằng dấu phẩy. Ví dụ
int a, b, c;
khai báo ba biến kiểu int (a,b và c) và hoàn toàn tương đương với :
int a;
int b;
int c;
Các kiểu số nguyên (char, short, long and int) có thể là số có dấu hay không dấu tuỳ theo miền giá trị mà chúng ta cần biểu diễn. Vì vậy khi xác định một kiểu số nguyên chúng ta đặt từ khoá signed hoặc unsigned trước tên kiểu dữ liệu. Ví dụ:
unsigned short NumberOfSons;
signed int MyAccountBalance;
2. thế nào là hằng số?
Một hằng số là bất kì một biểu thức nào mang một giá trị cố định, như:
Các số nguyên
1776
707
-273
chúng là các hằng mang giá trị số. Chú ý rằng khi biểu diễn một hằng kiểu số chúng ta không cần viết dấu ngoặc kép hay bất kì dấu hiệu nào khác.
Thêm vào những số ở hệ cơ số 10 ( cái mà tất cả chúng ta đều đã biết) C++ còn cho phép sử dụng các hằng số cơ số 8 và 16. Để biểu diễn một số hệ cơ số 8 chúng ta đặt trước nó kí tự 0, để biễu diễn số ở hệ cơ số 16 chúng ta đặt trước nó hai kí tự 0x. Ví dụ:
75 // Cơ số 10
0113 // cơ số 8
0x4b // cơ số 16
Các số thập phân (dạng dấu phẩy động)
Chúng biểu diễn các số với phần thập phân và/hoặc số mũ. Chúng có thể bao gồm phần thập phân, kí tự e (biểu diễn 10 mũ…).
3.14159 // 3.14159
6.02e23 // 6.02 x 1023
1.6e-19 // 1.6 x 10-19
3.0 // 3.0
Kí tự và xâu kí tự
Trong C++ còn tồn tại các hằng không phải kiểu số như:
‘z’
‘p’
“Hello world”
“How do you do?”
3. thế nào là kiểu dữ liệu char
Kiểu dữ liệu char được dùng để lưu trữ một ký tự đơn.
Một kiểu dữ liệu char có thể lưu một ký tự đơn được bao đóng trong hai dấu nháy đơn (‘’). Thí dụ
kiểu dữ liệu char như: ‘a’, ‘m’, ‘$’ ‘%’.
Ta có thể lưu trữ những chữ số như những ký tự bằng cách bao chúng bên trong cặp dấu nháy đơn.
Không nên nhầm lẫn chúng với những giá trị số. Ví dụ, ‘1’, ‘5’ và ‘9’ sẽ không được nhầm lẫn với
những số 1, 5 và 9.
Xem xét những câu lệnh của mã C dưới đây:
char gender;
gender=’M';
Hàng đầu tiên khai báo biến gender của kiểu dữ liệu char. Hàng thứ hai lưu giữ một giá trị khởi
tạo cho nó là ‘M’. Biến gender là một biến ký tự và ‘M’ là một hằng ký tự. Biến này được cấp
phát 8 bit (1 byte) trong bộ nhớ.
4. kiểu dữ liệu int là gì?
Là kiểu dữ liệu lưu trữ dữ liệu số và là một trong những kiểu dữ liệu cơ bản trong bất cứ ngôn ngữ
lập trình nào. Nó bao gồm một chuỗi của một hay nhiều con số.
Thí dụ trong C, để lưu trữ một giá trị số nguyên trong một biến tên là ‘num’, ta khai báo như sau:
int num;
Biến num không thể lưu trữ bất cứ kiểu dữ liệu nào như “Alan” hay “abc”. Kiểu dữ liệu số này cho
phép các số nguyên trong phạm vi -32768 tới 32767 được lưu trữ. Hệ điều hành cấp phát 16 bit (2
byte) cho một biến đã được khai báo kiếu int. Ví dụ: 12322, 0, -232.
5. kiểu dữ liệu số thực là gì?
Một biến có kiểu dữ liệu số thực được dùng để lưu trữ các giá trị chứa phần thập phân. Trình biên
dịch phân biệt các kiểu dữ liệu float và int.
Ðiểm khác nhau chính của chúng là kiểu dữ liệu int chỉ bao gồm các số nguyên, trong khi kiểu dữ
liệu float có thể lưu giữ thêm cả các phân số.
Ví dụ, trong C, để lưu trữ một giá trị float trong một biến tên gọi là ‘num’, việc khai báo sẽ như
sau :
float num;
Biến đã khai báo là kiểu dữ liệu float có thể lưu giá trị thập phân có độ chính xác tới 6 con số.
Biến này được cấp phát 32 bit (4 byte) của bộ nhớ. Ví dụ: 23.05, 56.5, 32.
Nếu chúng ta gán giá trị 23.5 cho num, thì biến num là biến số thực và 23.5 là một hằng
số thực.
6. thế nào là kiểu dữ liệu void
C có một kiểu dữ liệu đặc biệt gọi là void. Kiểu dữ liệu này chỉ cho trình biên dịch C biết rằng
không có dữ liệu của bất cứ kiểu nào. Trong C, các hàm số thường trả về dữ liệu thuộc một kiểu
nào đó. Tuy nhiên, khi một hàm không có gì để trả về, kiểu dữ liệu void được sử dụng để chỉ ra
điều này.
7. thế nào là các toán tử số học?
Những toán tử số học được sử dụng để thực hiện những thao tác mang tính số học. Chúng được chia
thành hai lớp : Toán tử số học một ngôi (unary) và toán tử số học hai ngôi (binary).
* các toán tử một ngôi: – ++ —
* chức năng: -(lấy đối số), ++(tăng một giá trị), –(giảm một giá trị)
* các toán tử hai ngôi: + – * % / ^
* giá trị: +(cộng), -(trừ), *(nhân), %(lấy phần dư), /(chia), ^(lấy số mũ)
8. thế nào là các toán tử tăng giảm?
C bao chứa hai toán tử hữu ích mà ta không tìm thấy được trong những ngôn ngữ máy tính
khác. Chúng là ++ và –. Toán tử ++ thêm vào toán hạng của nó một đơn vị, trong khi toán tử –
– giảm đi toán hạng của nó một đơn vị.
Cụ thể:
x = x + 1;
có thể được viết là:
x++;
và:
x = x – 1;
có thể được viết là:
x–;
Cả hai toán tử này có thể đứng trước hoặc sau toán hạng, chẳng hạn:
x = x + 1;
có thể được viết lại là
x++ hay ++x;
Và cũng tương tự cho toán tử –.

lưu đồ



Task 1

1. Muốn thực hiện một chương trình thì ta phải làm gì ?
* Xác định yêu cầu của chương trình(bài toán)
– Dữ liệu đầu vào (input)
– Dữ liệu đầu ra (out put)
* Chọn thuật toán để thực hiện yêu cầu
* Soạn thảo chương trình nguồn
* Dịch chương trình nguồn để sửa các lỗi gọi là lỗi cú pháp
* Chạy chương trình, kiểm tra kết quả. Nếu sai, sửa lại chương trình
duchj và chạy lại để kiểm tra
2. Nhập dữ liệu như thế nào?
* Để nhập dữ liệu vào từ bàn phím ta sử dụng hàm cin và toán tử nhập >> theo cú pháp
cin>>biến 1;
cin>>biến 2;

cin>>biến n;
hoặc cin>>biến 1>>biến 2…>>biến n;
vd: để nhập giá trị cho biến a và b ta viết:
cin>>a;
cin>>b;
3. Xuất dữ liệu như thế nào?
* Để xuất giá trị của một biểu thức ra màn hình ta sử dụng hàm cout
và toán tử xuất << theo cú pháp:
cout<<biểu thức 1;
cout<<biểu thức 2;

cout<<biểu thức n;
hoặc cout<<biểu thức 1<<biểu thức 2…<<biểu thức n;
4.cấu trúc IF …ELSE là gì?
*Cấu trúc IF …ELSE giúp lập trình viên chỉ làm so sánh đơn và sau đó thực thi các bước tùy theo
kết quả của phép so sánh là True (đúng) hay False (sai).
5. Cấu trúc chương trình C như thế nào?
C có một số từ khóa, chính xác là 32. Những từ khóa này kết hợp với cú pháp của C hình thành ngôn
ngữ C. Nhưng nhiều trình biên dịch cho C đã thêm vào những từ khóa dùng cho việc tổ chức bộ nhớ ở những giai đoạn tiền xử lý nhất định.
Vài quy tắc khi lập trình C như sau :
– Tất cả từ khóa là chữ thường (không in hoa)
– Ðoạn mã trong chương trình C có phân biệt chữ thường và chữ hoa. Ví dụ : do while thì khác
với DO WHILE
– Từ khóa không thể dùng cho các mục đích khác như đặt tên biến (variable name) hoặc tên hàm
(function name)
– Hàm main() luôn là hàm đầu tiên được gọi đến khi một chương trình bắt đầu chạy
6. Dấu phân cách được sử dụng như thế nào?
Dấu phân cách (Delimiters)
Sau định nghĩa hàm sẽ là dấu ngoặc xoắn mở {. Nó thông báo điểm bắt đầu của hàm. Tương tự, dấu
ngoặc xoắn đóng } sau câu lệnh cuối trong hàm chỉ ra điểm kết thúc của hàm. Dấu ngoặc xoắn mở
đánh dấu điểm bắt đầu của một khối mã lệnh, dấu ngoặc xoắn đóng đánh dấu điểm kết thúc của khối
mã lệnh đó. Trong đoạn mã mẫu có 2 câu lệnh giữa 2 dấu ngoặc xoắn.
Hơn nữa, đối với hàm, dấu ngoặc xoắn cũng dùng để phân định những đoạn mã trong trường hợp dùng
cho cấu trúc vòng lặp và lệnh điều kiện..
7.Dấu kết thúc câu lệnh (Terminator)
Dòng int i = 0; trong đoạn mã mẫu là một câu lệnh (statement). Một câu lệnh trong C thì được
kết thúc bằng dấu chấm phẩy (;). C không hiểu việc xuống dòng dùng phím Enter, khoảng trắng dùng
phím spacebar hay một khoảng cách do dùng phím tab. Có thể có nhiều hơn một câu lệnh trên cùng
một hàng nhưng mỗi câu lệnh phải được kết thúc bằng dấu chấm phẩy. Một câu lệnh không được kết
thúc bằng dấu chấm phẩy được xem như một câu lệnh sai.
8. Dòng chú thích được sử dụng như thế nào?
Những chú thích thường được viết để mô tả công việc của một lệnh đặc biệt, một hàm hay toàn bộ
chương trình. Trình biên dịch sẽ không dịch chúng. Trong C, chú thích bắt đầu bằng ký hiệu /* và kết thúc bằng */. Trường hợp chú thích có nhiều dòng, ta phải chú ý ký hiệu kết thúc (*/), nếu thiếu ký hiệu này, toàn bộ chương trình sẽ bị coi như là một chú thích. Trong đoạn mã mẫu dòng chữ "This is a sample program" là dòng chú thích. Trong trường hợp chú thích chỉ trên một dòng ta có thể dùng //.
VD:
int a = 0; // Biến ‘a’ đã được khai báo như là một kiểu số nguyên (interger)