chương 1 Nội dung: + Về kiến thức: Trình bày được nguồn gốc của ngôn ngữ C + Về kỹ năng: sử dụng phần mềm Dev C++ + Năng lực tự chủ và trách nhiệm: Tỉ mỉ, cẩn thận, chính xác, ngăn nắp trong công việc. Phương pháp: + Về kiến thức: Được đánh giá bằng hình thức kiểm tra viết, trắc nghiệm, vấn đáp + Về kỹ năng: Viết một chương trình cơ bản sử dụng phần mềm Dev C++ + Năng lực tự chủ và trách nhiệm: Tỉ mỉ, cẩn thận, chính xác, ngăn nắp trong công việc. 22 CHƯƠNG 2: CÁC THÀNH PHẦN CƠ BẢN Mã chương: MH 09-02 Mục tiêu: Sau khi học xong chương này sinh viên có khả năng: - Hiểu và sử dụng được hệ thống kí hiệu và từ khóa. - Hiểu được các kiểu dữ liệu.
- Hiểu được và vận dụng được các loại biến, hằng biểu thức cho từng chương trình cụ thể. - Biết, hiểu và so sánh được các lệnh, khối lệnh. - Thực hiện được việc chạy chương trình. Hệ thống từ khóa và kí hiệu được dùng trong C.
Bộ chữ viết trong C: Bao gồm những ký tự, những ký hiệu sau (phân biệt chữ hoa và chữ thường): 26 chữ cái la tinh lớn A,B,C.Z 26 chữ cái la tinh nhỏ a,b,c. 10 chữ số thập phân 0,1,2.(chữ số Ả Rập) Các ký hiệu toán học: +, -, *, /, =, <, >, (, ) Các ký hiệu đặc biệt: :. Dấu cách hay khoảng trống. Các từ khóa trong C: Từ khóa là các từ dành riêng (reserved words) của C mà người lập trình có thể sử dụng nó trong chương trình tùy theo ý nghĩa của từng từ.
Dùng để khai báo dữ liệu, viết câu lệnh. Ta không được dùng từ khóa để đặt cho các tên riêng của mình. Các từ khóa của Turbo C 3.0 bao gồm: asm auto break case cdecl char class const continue _cs default delete do double _ds else enum _es extern _export far _fastcall float for friend goto huge if inline int interrupt _loadds long near new operator pascal private protected public register return _saveregs _seg short signed sizeof _ss static struct switch template this typedef union unsigned virtual void volatile while Khác với ngôn ngữ khác, các từ khóa của Turbo C đều viết bằng chữ thường. Ví dụ: phải viết là if, không được viết là If hoặc IF như Pascal hoặc Foxpro.
Tên: Khái niệm tên rất quan trọng trong quá trình lập trình, nó không những thể hiện rõ ý nghĩa trong chương trình mà còn dùng để xác định các đại lượng khác nhau khi thực hiện chương trình. Tên thường đặt cho hằng, biến, mảng, con trỏ, nhãn,… Chiều dài tối đa của biến là 32 ký tự. Tên biến hợp lệ là một chuỗi ký tự liên tục gồm: ký tự chữ, số và dấu gạch dưới. Ký tự đầu tiên phải là chữ hoặc dấu gạch dưới.
Khi đặt tên không được trùng từ khóa. VD1: Các tên đúng: delta, a_1, Num_ODD, Case Các tên sai: 23 3a_1 (ký tự đầu là số) num-odd (sử dụng dấu gạch ngang) int (đặt tên trùng với từ khóa) del ta (có khoảng trắng) f(x) (có dấu ngoặc tròn) Lưu ý: trong C phân biệt chữ hoa chữ thường. VD2: number khác Number case khác Case (case là từ khóa, do đó bạn đặt tên là Case vẫn đúng) 1. Cặp dấu ghi chú thích: Khi viết chương trình có một vài trường hợp ta phải có một vài lời ghi chú về một đoạn chương trình nào đó để ghi nhớ, dễ hiểu, dễ hiệu chỉnh sau này.
Ghi chú thì không thuộc về nội dung của chương trình, khi biên dịch sẽ bị bỏ qua, nội dung sẽ ghi trong cặp dấu chú thích /* và */.h> main () { /*Bắt đầu khối lệnh*/ …. } /*Kết thúc khối lệnh*/ Nếu bạn không viết đúng quy định trên, khi chạy chương trình sẽ bị lỗi. Ví dụ: #include <stdio.h> int main () { char ten[50]; /* khai bao bien ten kieu char 50 ky tu */ /*Xuat chuoi ra man hinh*/ printf(“Xin cho biet ten cua ban !”); scanf(“%s”,ten); /*Doc vao 1 chuoi la ten cua ban*/ printf(“Xin chao ban %s\n ”,ten); printf(“Chao mung ban den voi Ngon ngu lap trinh C”); /*Dung chuong trinh, cho go phim*/ getch(); return 0; } Khi biên dịch chương trình, C gặp cặp dấu ghi chú sẽ không dịch ra ngôn ngữ máy. Tóm lại, đối với ghi chú dạng // dùng ghi chú một hàng và dạng /* ….
*/ có thể ghi chú một hàng hoặc nhiều hàng. Các ký tự điều khiển: Turbo C có nhiều ký tự điều khiển việc xuất dữ liệu ra màn hình hoặc máy in hơn hẵn các ngôn ngữ lập trình khác. Bộ ký tự điều khiển của Turbo C bao gồm: 24 Ký tự điều khiển Giá trị Ký tự được hiểu Tác dụng \a 0x07 BEL Phát tiếng còi \b 0x08 BS Xóa ký tự bên trái \f 0x0C FF Sang trang \n 0x0A LF Xuống dòng \r 0x0D CR Trở về đầu dòng \t 0x09 HT Tab theo cột \v 0x0B VT Tab theo hang \\ 0x05 \ Dấu Backslash \’ 0x2C ‘ Dấu nháy đơn (‘) \” 0x22 “ Dấu nháy kép (“) \? 0x3F ? Dấu chấm hỏi (?) \ddd ddd Ký tự có giá trị theo cơ số 8 là ddd trong bảng mã ASCII \xHHH 0xHHH Ký tự có giá trị theo cơ số 16 là HHH trong bảng mã ASCII Bảng 1: Bộ ký tự điều khiển của Turbo C Ví dụ: #include<stdio.h> main() { printf(“\nDay la chuong trinh \’ Turbo C\’”); … … … } Kết quả sẽ in ra: Day là chuong trinh ‘Turbo C’ 2. Các kiểu dữ liệu: kiểu số, chuỗi, ký tự.
Kiểu số nguyên: Kiểu số nguyên là kiểu dữ liệu dùng lưu các giá trị nguyên hay còn gọi là kiểu đếm được. Kiểu số nguyên trong C được chia thành các kiểu dữ liệu con, mõi kiểu có một miền giá trị khác nhau. Kiểu số nguyên 1 byte (8 bits): Gồm có các kiểu sau: STT Kiểu dữ liệu Miền giá trị (domain) 1 unsigned char Từ 0 đến 255 (tương đương 256 ký tự trong bảng mã ASCII) 2 Char Từ -128 đến 127 Bảng 2: Kiểu dữ liệu số nguyên 1 byte (8 bits) Kiểu unsigned char: lưu các số nguyên dương từ 0 đến 255. - Để khai báo một biến là kiểu ký tự thì ta khai báo biến kiểu unsigned char.
Mỗi số trong miền giá trị của kiểu unsigned char tương ứng với một ký tự trong bảng mã ASCII. Kiểu char: lưu các số nguyên từ -128 đến 127. Kiểu char sử dụng bit trái nhất làm bit dấu. Nếu gán giá trị > 127 cho biến kiểu char thì giá trị của biến này có thể là số âm.
Ví dụ: Ký tự Mã ASCII 0 048 1 049 2 050 A 065 B 066 a 097 b 098 2. Kiểu số nguyên 2 bytes (16 bits): Gồm có 4 kiểu sau: STT Kiểu dữ liệu Miền giá trị (domain) 1 Enum Từ -32,768 đến 32,767 2 unsigned int Từ 0 đến 65,535 3 Short int Từ -32,768 đến 32,767 4 Int Từ -32,768 đến 32,767 Bảng 3: Kiểu dữ liệu số nguyên 2 bytes (16 bits) Kiểu enum, short int, int : Lưu các số nguyên từ -32768 đến 32767. Sử dụng bit bên trái nhất làm bit dấu. => Nếu gán giá trị >32767 cho biến có 1 trong 3 kiểu trên thì giá trị của biến này có thể là số âm.
Kiểu unsigned int: Kiểu unsigned int lưu các số nguyên dương từ 0 đến 65535. Kiểu số nguyên 4 bytes (32 bit): Kiểu số nguyên 4 bytes hay còn gọi là số nguyên dài (long) gồm có 2 kiểu sau: STT Kiểu dữ liệu Miền giá trị (Domain) 1 unsigned long Từ 0 đên 4,294,967,295 2 Long Từ -2,147,483,648 đên 2,147,483,647 Bảng 4: Kiểu dữ liệu số nguyên 4 bytes (32 bits) Kiểu long: Lưu tất cả các số nguyên từ -2147483648 đên 2147483647. Sử dụng bit bên trái nhất để làm bit dấu. => Nếu gán giá trị > 2147483647 cho biến có kiểu long thì giá trị biến này có thể là số âm.
Kiểu unsigned long: Lưu các số nguyên dương từ 0 đên 4294967295. Kiểu số thực: Kiểu số thực dùng lưu các số thực hay các sô có dấu chấm thập phân gồm có 3 kiểu sau: STT Kiểu dữ liệu Kích thước Miền giá trị (domain) (Size) 1 float 4 bytes Từ 3.4 * 1038 2 Double 8 bytes Từ 1.7 * 10308 3 long double 10 bytes Từ 3.4 * 104932 Bảng 5: Kiểu dữ liệu số thực Mỗi kiểu số thực trên đều có miền giá trị và độ chính xác (số số lẻ) khác nhau. Tùy vào nhu cầu sử dụng mà ta có thể khai báo biến thuộc 1 trong 3 kiểu trên. Ngoài ra ta còn có kiểu dữ liệu void, kiểu này mang ý nghĩa là kiểu rỗng không chứa giá trị nào cả.
Các loại biến, cách khai báo, sử dụng. Biến: Biến là một đại lượng được người lập trình định nghĩa và được đặt tên thông qua việc khai báo biến. Biến dùng chứa dữ liệu trong quá trình thực hiện chương trình và giá trị của biến có thể bị thay đổi trong quá trình này. Cách đặt tên biến giống như cách đặt tên đã nói trong phần trên.
Mỗi biến thuộc về một kiểu dữ liệu xác định và có giá trị thuộc kiểu đó. Tên biến: Muốn biến sử dụng trong chương trình đều phải đặt tên theo các quy định như sa: Tên biến hợp lệ là một chuỗi ký tự liên tục gồm: Ký tự, chữ, số, dấu gạch dưới. Ký tự đầu tiên ,phải là chữ. Khi đăt tên biến không đặt trùng với các từ khóa của Turbo C.
Ví dụ: bien_1, bien_2, temp22 hợp lê. bi&, 2ten, A b, float không hợp lệ. Turbo C phân biệt rất rõ rang giữa chữ in thường và in hoa. 27 Ví dụ: BIEN, Bien, bieN: Là những tên biến khác nhau.
If, Goto: Tuy trùng với từ khóa nhưng vẫn hợp lệ. - Turbo C chỉ phân biệt hai tên hợp lệ với nhau với n ký tự đầu tiên của chúng, ( n=8 đến 32 ký tự). Như vậy bạn có thể đặt tên biến hợp lệ một cách thoải mái, tuy nhiên tên biến càng dài thì càng khó nhớ. Ví dụ : Hai tên biến sau đây được coi là hợp lệ và cùng tên nhau : - Ten_bien_dai_toi_32_ky_tu_dau_tien_1 - Ten_bien_dai_toi_32_ky_tu_dau_tien_2 3.
Cú pháp khai báo biến: <Kiểu dữ liệu> Danh sách các tên biến; Kiểu dữ liệu: một trong các kiểu ở mục Danh sách các tên biến: gồm các tên biến có cùng kiểu dữ liệu, mỗi tên biến cách nhau dấu phẩy (,), cuối cùng là dâu chấm phẩy (;). VD1: int a, b, c; /*Ba biến a, b,c có kiểu int*/ long int chu_vi; /*Biến chu_vi có kiểu long*/ float nua_chu_vi; /*Biến nua_chu_vi có kiểu float*/ double dien_tich; /*Biến dien_tich có kiểu double*/ Khi khai báo biến nên đặt theo quy tắc Hungarian Notation VD2: int ituoi; //khai báo biến ituoi có kiểu int float fTrongluong; //khai báo biến fTrongluong có kiểu long char ckitu1, ckitu2; //khai báo biến ckitu1, ckitu2 có kiểu char Các biến khai báo trên theo quy tắc Hungarian Notation.