Xem mẫu

  1. Bộ chữ viết trong C Bộ chữ viết trong C bao gồm các ký tự sau: l LẬP TRÌNH CĂN BẢN 26 chữ cái latinh lớn A,B,C...Z l 26 chữ cái latinh nhỏ a,b,c ...z. l 10 chữ số thập phân 0,1,2...9. l CÁC THÀNH PHẦN CƠ BẢN CỦA Các ký hiệu toán học: +, -, *, /, =, , ( , ) l NGÔN NGỮ C Các ký hiệu đặc biệt: . , : ; " ' _ @ # $ ! ^ [ ] { } ... l Dấu cách hay khoảng trống. l Phân biệt chữ HOA và chữ thường ườ l 3 1 Nội dung Các từ khóa trong C Từ khóa là các từ dành riêng của C: hàm, Bộ chữ viết trong C l l lệnh, thư viện,… l Các từ khóa Không được dùng từ khóa để đặt tên trong l l Cặp dấu chú thích chương trình. l Các kiểu dữ liệu sơ cấp chuẩn l Tên và hằng l Biến và biểu thức l Cấu trúc của một chương trình C 2 4
  2. Cặp dấu chú thích (comment) Kiểu số nguyên #include Được dùng để lưu các giá trị nguyên hay còn gọi là l #include kiểu đếm được. int main (){ char ten[50]; /* khai bao bien ten kieu char 50 ky tu */ printf(“Xin cho biet ten cua ban !”); scanf(“%s”,ten); /*Doc vao 1 chuoi la ten ban*/ printf(“Xin chao ban %s\n ”,ten); //Dung chuong trinh, cho go phim getch(); return 0; } Khi biên dịch các phần chú thích bị bỏ qua l l Dùng /* và */: chú thích dài nhiều dòng l Dùng //: chú thích chỉ 1 dòng 5 7 Các kiểu dữ liệu sơ cấp chuẩn Kiểu số thực Được dùng để lưu các số thực hay các số có dấu Kiểu số nguyên (integer) l l chấm thập phân 1 byte, 2 byte và 4 byte l l Có dấu hay không dấu Kiểu số thực (real) l Dấu chấm động l l 4 byte, 8 byte và 10 byte Kiểu void l Kiểu rỗng: void l Có ý nghĩa là kiểu rỗng không chứa giá trị gì l Ví dụ: void main(){ l ….} 6 8
  3. Kiểu enum (2) Hàm sizeof() Xác định kích thước 1 kiểu dữ liệu khi l chạy chương trình (runtime) l Cú pháp: sizeof(tên kiểu dữ liệu) l Kết quả trả về: số byte kích thước Ví dụ: l sizeof(int) sizeof(long double) 9 11 Kiểu enum (1) Kiểu enum (3) enum gần gi ống với tiền xử lý #define. l l Cho phép định nghĩa 1 danh sách các bí danh (aliase) để trình bày các số nguyên. l Ví dụ: #define MON 1 #define TUE 2 #define WED 3 có thể dùng enum: enum week{ Mon=1, Tue, Wed, Thu, Fri Sat, Sun} days; Ưu điểm của enum so với #define là nó có phạm l vi, nghĩa là 1 bi ến chỉ có tác dụng trong khối nó được khai báo. 10 12
  4. Tên và hằng trong C Tên do người lập trình tự đặt Ví dụ: l l Tên (identifier) Tên đặt hợp lệ: Chieu_dai, Chieu_Rong, Chu_Vi l Được dùng để đặt cho chương trình, hằng, Tên không hợp lệ: Do Dai, 12A2 l l kiểu, biến, chương trình con, ... Phải tuân thủ quy tắc: l l Có 2 loại: Sử dụng bộ chữ cái, chữ số và dấu gạch dưới (_) l Tên chuẩn (từ khóa): là tên do C đặt sẵn như Bắt đầu bằng một chữ cái hoặc dấu gạch dưới. l l Không có khoảng trống ở giữa tên. tên kiểu: int, char, float,…; tên hàm: sin, cos... l Không được trùng với từ khóa. l l Tên do ng ười lậ p trình tự đặt. Độ dài tối đa của tên là 32 ký tự, tuy nhiên cần đặt sao l cho rõ ràng, dễ nhận biết và dễ nhớ. Không cấm việc đặt tên trùng với tên chuẩn nhưng khi l đó ý ngh ĩa của tên chuẩn không còn giá trị nữa. 13 15 Chú ý khi đặt tên Hằng (Constant) Là đại lượng không đổi trong suốt quá trình thực Phân biệt HOA và thường l l thi chương trình => không thể gán lạI giá trị cho hằng Hằng có thể là: l 1 con số, 1 ký tự l l 1 chuỗi ký tự 14 16
  5. Hằng số thực Hằng số nguyên (2) Hằng số nguyên 2 byte (int) hệ thập lục Giá trị kiểu: float, double, long double l l phân 2 cách thể hiện l Là kiểu số nguyên dùng: l l Cách 1: 123.34 -223.333 3.00 -56.0 10 ký số 0..9 và l 6 ký tự A, B, C, D, E ,F l Cách 2: viết theo số mũ hay số khoa học l Cách biểu diễn: l 1234.56e-3 = 1.23456 (là số 1234.56*10-3) 0 x -123.45E4 = -1234500 ( là -123.45*104) Số thập lục phân : l 0xdndn-1dn-2…d1d0 17 19 Hằng số nguyên (1) Hằng số nguyên (3) Hằng số nguyên 2 byte (int) hệ thập phân Ví dụ: Kết quả của chương trình sau là gi? l l Sử dụng 10 ký số 0..9 l Hằng số nguyên 2 byte (int) hệ bát phân l Sử dụng 8 ký số 0..7 l Cách biểu diễn: 0 l 18 20
  6. Hằng số nguyên (4) Hằng chuỗi ký tự Ví dụ: “Ngon ngu lap trinh C” l Hằng số nguyên 4 byte (long) l l Là 1 chuỗi hay 1 xâu ký tự được đặt trong cặp dấu Được biểu diễn như số int trong hệ thập l nháy kép (“). phân nhưng kèm theo ký tự l hoặc L. Chú ý: l “” : chuỗi rỗng - không có nội dung Ví dụ: l l Khi lưu trữ trong bộ nhớ, một chu ỗi được k ết thúc bằng ký tự NULL (‘\0’: mã Ascii là 0). 45345L hay 45345l hay 45345 l Để biểu diễn ký tự đặc biệt bên trong chuỗi ta phải thêm dấu \ phía trước. dụ: l Ví Viết “I\’m a student” cho “I’m a student” Viết “Day la ky tu \“dac biet\”” cho “Day la ky tu “dac biet”” 21 23 Hằng ký tự (char) Biến và Biểu thức (variable and expression) Ví dụ: ‘a’, ‘A’, ‘0’, ‘9’ l Là 1 ký tự được viết trong l cặp dấu nháy đơn (‘). l Mỗi một ký tự tương ứ ng với 1 giá trị trong bảng mã Biến dùng để chứa dữ liệu trong quá trình thực hiện l ASCII. chương trình. l Hằng ký tự cũng được xem như trị số nguyên. l Giá trị của biến có thể bị thay đổi. l Chúng ta có thể thực hiện l Cú pháp khai báo biến: các phép toán số học trên 2 bở i dấu Danh sách các tên biến cách nhau ký tự (dùng giá trị ASCII của phẩy; chúng) ASCII = American Standard Code for Information Interchange 22 24
  7. Vị trí khai báo biến (2) Khởi tạo giá trị cho biến lúc khai báo Ví dụ: Biến trong l l Được đặt bên trong l hàm, chương trình Cách vi ết giá trị cho biết luôn ki ểu của nó: l chính hay một khối lệnh Ảnh hưởng đến hàm, l chương trình hay khối lệnh chứa nó (biến cục bộ). Chú ý: 8864L có kiểu long, còn 8864 có kiểu int l 25 27 Vị trí khai báo biến (1) Biểu thức (1) Ví dụ: l Biến ngoài l (-b + sqrt(Delta))/(2*a) Được đặt bên Biểu thức là một sự kết hợp giữa l l ngoài tất cả các Các toán tử (operator) và l Các toán hạng (operand) l hàm Các loại toán tử trong C l l Ảnh hưởng đến Toán tử số học l toàn bộ chương Toán tử quan hệ và logic l trình (biến toàn Toán tử Bitwise l cục) Toán tử ? l Toán tử con trỏ & và * l Toán tử dấu ph ẩy l 26 28
  8. Các toán tử số học (1) Các toán tử số học (3) Đâu là sự khác nhau? l x++ trả về giá trị hiện hành của x và sau đó tăng x ++x tăng x trước và sau đó trả về giá trị mới của x 29 31 Các toán tử số học (2) Biểu thức Boolean (boolean expression) Chú ý! Không có kiểu Boolean rõ ràng trong C. l Thay vào đó C dùng các giá trị nguyên để tượng trưng cho giá trị Boolean, với qui ước: Giá trị 0 false • Tăng và giảm (++ & --) Bất kỳ giá trị nào ngoại trừ 0 true ++x hay x++ giống x = x + 1 l Chú ý! C dùng “=” cho phép gán, và dùng “==“ --x hay x-- giống x = x – 1 cho phép so sánh. Nó trả về 1 nếu bằng và 0 nếu • Còn: • Tuy nhiên: ngược lại x = 10; x = 10; y = x++; //y = 10, x=11 y = ++x; //y = 11, x=11 30 32
  9. Các toán tử quan hệ và các toán tử Logic (1) Các toán tử quan hệ và các toán tử Logic (3) Bảng chân trị cho các toán tử Logic l l Các phép so sánh sau tạo ra các biểu thức logic có giá trị kiểu Boolean Thứ tự ưu tiên l Ví dụ: 10>5&&!(10
  10. Toán tử ? Toán tử dấu phẩy Toán tử ? thực hiện như lệnh if-else. Ví dụ: l l x = (y=3,y+1); l Cú pháp: E1 ? E2 : E3 l Trước hết gán 3 cho y rồi gán 4 cho x. l Ví dụ: l X = (10 > 9) ? 100 : 200; Được sử dụng để kết hợp các biểu thức lại với l nhau. =>X=100 Bên trái của dấu (,) luôn được xem là kiểu l void. X = (10 >15 )? 100 : 200; Biểu thức bên phải trở thành giá trị của tổng l =>X=200 các biểu thức được phân cách bởi dấu phẩy. 37 39 Toán tử con trỏ & và * Tổng kết về độ ưu tiên Ví dụ: l int *p; //con tro so nguyen int count=5, x; p = &count; =>Đặt vào biến m địa chỉ bộ nhớ của biến count Toán tử * trả về nội dung của ô nhớ mà một l con trỏ đang chỉ vào Ví dụ: l x = *p; // x=5 38 40
  11. Phép gán được viết gọn lại Cấu trúc của 1 chương trình C (1) Cấu trúc một chương trình C l x= x y; l Tiền xử lý và biên dịch có thể được viết gọn lại (short form): l Prototype l Các tập tin thư viện thông dụng 41 43 Các tập tin thư viện thông dụng Cấu trúc của 1 chương trình C (2) stdio.h: Định nghĩa các hàm vào/ra chuẩn (standard l Các chỉ input/output):printf(), scanf(), getc(), putc(), gets(), puts(), fflush(), thị tiền fopen(), fclose(), fread(), fwrite(), getchar(), putchar(), getw(), Chương xử lý putw()… trình conio.h: Định nghĩa các hàm vào ra trong chế độ DOS: clrscr(), l chính getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol(),… Định nghĩa math.h: Định nghĩa các hàm tính toán: abs(), sqrt(), log(). log10(), kiểu mới l sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(),… Prototype alloc.h: Định nghĩa các hàm liên quan đến việc quản lý bộ nhớ: l calloc(), realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(), Khai báo … Cài đặt biến io.h: Định nghĩa các hàm vào ra cấp thấp: open(), _open(), l các ngoài hàm read(), _read(), close(), _close(), creat(), _creat(), creatnew(), eof(), filelength(), lock(),… graphics.h: Định nghĩa các hàm liên quan đến đồ họa: l initgraph(), line(), circle(), putpixel(), getpixel(), setcolor(), … 42 44
  12. Chia chương trình ra các module Tiền xử lý và biên dịch (preprocess and compile) (1) 1 chương trình phức tạp có thể được chia ra vài l module Các chỉ thị định hướng (directive): l #include…, #define… l Có thể chứa các lệnh phức tạp như if-else. l Bộ tiền xử lý (preprocessor) sẽ thông dịch l các directive và xóa bỏ nó trước khi cung cấp cho trình biên dịch C. 45 47 Chia chương trình ra các module #define (2) Vấn đề: testmodule.c phải #define khai báo một l l biết các prototype của foor tên macro (macro và bar. symbol). Giải pháp 1 (tệ): l Sau đó, mỗi lần tên l Chèn tay các prototype vào l macro này xuất hiện, các file .c có dùng nó. nó sẽ được thay thế Bất lợi: Mỗi khi prototype bị l bởi giá trị của nó. thay đổi => phải chỉnh lại prototype trong tất cả các file .c dùng nó. Giải pháp 2 (tốt): l Lưu các prototype vào 1 file l riêng biệt mymodule.h (h: 46 48 header).
  13. #include Với #include, bộ tiền xử lý sẽ thêm và thay thế l token #include filename bằng nội dung của filename. Hết chương Các header file sẽ được tìm ở đâu? l #include : tìm file.h trong thư mục đã được l xác định trong INCLUDE DIRECTORIES. Hoặc trong /usr/include (linux) 49 51 #include “C:\\TC\\file.h”: tìm file.h trong đường dẫn l Header file Các header file có thể l chứa: Prototype cho các hàm l (function) l Định ngh ĩa kiểu (structs, unions, enums, typedefs) l (Định nghĩa các class trong C++) l #define macro l #pragma cho compiler l Các biến toàn cụ c l Cài đặt trực tiếp các hàm 50
nguon tai.lieu . vn