1.19k likes | 1.47k Views
NGÔN NGỮ LẬP C. Giáo viên Vũ Văn Định. Bài 1: Tổng quan về ngôn ngữ lập trình C. Ngôn ngữ C có một số các đặc điểm nổi bật sau : Bộ lệnh phù hợp với phương pháp lập trình cấu trúc. Kiểu dữ liệu phong phú. Một chương trình C bao giờ cũng gồm một hoặc nhiều hàm và các hàm rời nhau.
E N D
NGÔN NGỮ LẬP C Giáo viên Vũ Văn Định
Bài 1: Tổng quan về ngôn ngữ lập trình C • Ngôn ngữ C có một số các đặc điểm nổi bật sau : • Bộ lệnh phù hợp với phương pháp lập trình cấu trúc. • Kiểu dữ liệu phong phú. • Một chương trình C bao giờ cũng gồm một hoặc nhiều hàm và các hàm rời nhau. • Là ngôn ngữ linh động về cú pháp, chấp nhận nhiều cách thể hiện chương trình . Ngôn ngữ lập trình C
I. Hướng dẫn sử dụng môi trương kết hợp Turbo C • Khởi động C1: Từ DOS [ đường dẫn ]\ TC.EXE C2: Từ Win C -> TC -> BIN -> TC.EXE C3: Start -> Run -> C:\TC\BIN\TC.EXE • Mở File Mở file mới : File -> New Mở file đã có: File -> Open • Ghi File Save (F2) : Ghi tệp mới đang soạn thảo vào đĩa Save as : Ghi tệp đang soạn thảo vào đĩa theo tên mới hoặc đe lên tệp đã có Ngôn ngữ lập trình C
Chạy một chương trình • F9 : Biên dịch • Ctrl F9 : Thực thi chương trình • Alt F5 : Xem kết quả • Thoát khỏi C • Thoát tạm thời về DOS : Dos Shell • Thoát hẳn khỏi C: File \ Quit ( Alt + X) Ngôn ngữ lập trình C
II. Giới thiệu ngôn ngữ lập trình C 1. Các thành phần của NNLT C • Tập các ký tự • Chữ cái: A .. Z, a .. z • Chữ số : 0..9 • Ký hiệu toán học : + - * / = ( ) • Ký tự gạch nối: _ • Các ký hiệu đặc biệt khác như : . , ; : [ ] { } ? ! \ & | % # $,… • Từ khoá • Là những từ có một ý nghĩa hoàn toàn xác định • Asm, char, do, int, float, for, do, While,… • Tên • Dùng để xác định các đại lượng khác nhau trong một chương trình • Bắt đầu bằng chữ cái hoặc gạch nối • Độ dài cực đại mặc định là 32 Ngôn ngữ lập trình C
2. Các kiểu dữ liệu cơ sở trong C • Kiểu số ký tự (char) • Kiểu số nguyên (int) • Kiểu dấu phẩy động (chính xác đơn (float), chính xác kép (double)) • Kiểu void Ngôn ngữ lập trình C
2.1 Kiểu ký tự (char) • Một giá trị kiểu ký tự (char) chiếm 1 byte trong bộ nhớ và biểu diễn một ký tự thông qua bảng mã ASCII. • Ví dụ Ngôn ngữ lập trình C
Trong ngôn ngữ C cung cấp hai kiểu ký tự (char) là signed char và unsigned char Ví dụ : char ch, ch1; ch= ‘a’ ; ch1= 97; Ngôn ngữ lập trình C
2.2 Kiểu số nguyên (int) Kiểu số nguyên trong C gồm các kiểu sau: Ngôn ngữ lập trình C
2.3 Kiểu số thực hay còn gọi là kiểu dấu phẩy động Ngôn ngữ lập trình C
3 Hằng và biến 3.1 Hằng: • Khái niệm: hằng là giá trị bất biến trong chương trình không thay đổi, không biến đổi về mặt giá trị. Các loại hằng được sử dụng trong C tương ứng với các kiểu dữ liệu nhất định • Trong C có ba loại hằng : • Hằng số • Hằng chuỗi • Hằng ký tự Ngôn ngữ lập trình C
Hằng số: là các giá trị số đã xác định, có thể là kiểu nguyên hay kiểu thực • Hằng nguyên: Giá trị chỉ bao gồm các chữ số, dấu +, - được lưu trữ theo kiểu int. Ví dụ: 12,-12 • Nếu giá trị vượt quá miền giá trị của int hoặc có ký tự l (hay L ) theo sau giá trị thì lưu theo kiểu long int. Ví dụ: 43L hoặc 43l là hằng nguyên lưu theo kiểu long int. • Hằng thực: Trong giá trị có dấu chấm thập phân, hoặc ghi dưới dạng số có mũ, và được lưu theo kiểu float, double, long double. Ví dụ: 1.2 , 2.1E -3 (2.1E-3=0.0021) hoặc 3.1e-2 (3.1e-2=0.031). Ngôn ngữ lập trình C
Hằng ký tự • Một hằng kiểu ký tự được viết trong dấu ngoặc đơn (' ) như 'A' hoặc 'z'. • Hằng ký tự 'A' thực sự đồng nghĩa với giá trị nguyên 65, là giá trị trong bảng mã ASCII của chữ hoa 'A' (Như vậy giá trị của hằng chính là mã ASCII của nó). Ðối với một vài hằng ký tự đặc biệt, ta cần sử dụng cách viết thêm dấu \ , như '\t' tương ứng với phím tab: • Hằng ký tự có thể tham gia vào phép toán như mọi số nguyên khác: VD: '8' - '1'= 56-49=7. Ngôn ngữ lập trình C
Hằng chuỗi • Là chuỗi ký tự nằm trong cặp dấu nháy kép " ". Các ký tự này cũng có thể là các ký tự được biểu diễn bằng chuỗi thoát. • Ví dụ: "Turbo C", "Ngôn ngữ C++ \n\r" • Một hằng chuỗi được lưu trữ tận cùng bằng một ký tự Nul (\0), ví dụ chuỗi "Turbo C" được lưu trữ trong bộ nhớ như sau: Ngôn ngữ lập trình C
Cách định nghĩa hằng sử dụng trong chương trình • Với các giá trị hằng thường được dùng trong một chương trình ta nên định nghĩa ở đầu chương trình (sau các dòng khai báo những thư viện chuẩn) theo cú pháp: #define <tên hằng> <giá trị> Ví dụ: #define PI 3.1415 Ngôn ngữ lập trình C
3.2 Biến - Cách khai báo: Mỗi biến trong chương trình đều phải được khai báo trước khi sử dụng với cú pháp khai: Kiểu dữ liệu <danh_sách_tên_biến>; • Lưu ý: nếu có nhiều tên biến thì giữa các tên biến phải có dấu , để ngăn cách Ví dụ: int a,b; float x; - Khởi đầu cho các biến Ngay trên dòng khai báo ta có thể gán cho biến một giá trị. Việc làm này gọi là khởi đầu cho biến. Ví dụ: int a,b=6,d=1; Ngôn ngữ lập trình C
Cách truy xuất đến địa chỉ của biến • Một số hàm của C dùng đến địa chỉ của biến ví dụ như hàm scanf. Ðể nhận địa chỉ của biến dùng toán tử: & Ví dụ: &tên_biến - &a : địa chỉ của biến a Ngôn ngữ lập trình C
3.3 Cấu trúc tổng quát của chương trình C Một chương trình C chuẩn gồm có các thành phần sau: • Các chỉ thị tiền biên dịch • Khai báo các kiểu dữ liệu mới • Khai báo hằng, khai báo biến • Khai báo hàm • Chương trình chính Ngôn ngữ lập trình C
1. Chỉ thị tiền biên dịch: giúp trình biên dịch thực hiện một số công việc trước khi thực hiện một số công việc trước khi thực hiện biên dịch chính thức VD: #include <stdio.h>; #include <conio.h>; 2. Khai báo kiểu dữ liệu mới: dung từ khoá typedef. VD: typedef int songuyen; typedef float mang[10]; 3. Khai báo hằng và biến: khai báo các hằng số và biến dùng trong chương trình 4. Khai báo hàm: khai báo các hàm tự viết 5. Chương trình chính: hàm main là hàm bắt buộc trong chương trình. Hàm main có thể trả về giá trị kiểu nguyên (int) hoặc không trả về giá trị nào (void) Ngôn ngữ lập trình C
/* Chương trình in ra dòng chữ Trung tâm đào tạo Trí Đức trên màn hình */ • # include <stdio.h> • void main () /* Ham chinh */ • { • printf(" \n Trung tâm đào tạo Trí Đức "); • /*xuong dongin chu Trung tâm đào tạo Trí Đức*/ • } Ngôn ngữ lập trình C
* Chương trình tính chu vi và diện tích hình tròn, biết bán kính r là một hằng số có giá trị =3.1 */ • # include <stdio.h> /* khai báo thư viện hàm nhập xuất chuẩn */ • # include <math.h> /* khai báo thư viện hàm toán học */ • #define r 3.1 • void main () • { • float cv,dt; /* khai bao bien chu vi va dien tich kieu so thuc */ • cv=2*r*M_PI; /* tinh chu vi */ • dt=M_PI*r*r; /* Tinh dien tich */ • printf("\nChu vi = %10.2f\nDien tich = %10.2f",cv,dt); • /* In ket qua len man hinh */ • getch(); /* Tam dung chuong trinh */ • } Ngôn ngữ lập trình C
*Chương trình này minh họa cách vừa khai báo, vừa khởi đầu một biến trong C */ • #include <stdio.h> • void main() • { • char ki_tu = 'a'; /* Khai báo/khởi đầu kí tự. */ • int so_nguyen = 15; /* Khai báo khởi đầu số nguyên */ • float so_thuc = 27.62; /* Khai báo/khởi đầu số thực/ • printf("%c la mot ki tu.\n",ki_tu); • printf("%d la mot so nguyen.\n",so_nguyen); • printf("%f la mot so thuc.\n",so_thuc); • } Ngôn ngữ lập trình C
Bài 2: Biểu thức và các phép toán • I. Biểu thức • Là sự kết hợp các phép toán và các toán hạng để diễn đạt một công thức toán học nào đó. • Biểu thức trong C gồm có biểu thức toán học và biểu thức logic • Biểu thức toán học bao gồm các phép toán số học và các hằng, các biến, các hàm • Biểu thức logic bao gồm các biến, hằng, hàm và phép toán logic (!: phép phủ định, &&: phép và, || : phép hoặc) Ngôn ngữ lập trình C
II. Các phép toán • Phép toán số học Phép toán Ý nghĩa + Cộng - Trừ * Nhân / Chia % Lấy phần dư Chú ý: -Phép toán chia 2 số nguyên sẽ chặt cụt phần thập phân. -Phép toán lấy phần dư không áp dụng cho các giá trị float và double Ngôn ngữ lập trình C
II. Các phép toán • Phép toán quan hệ Phép toán Ý nghĩa Ví dụ > Có lớn hơn không? a>b >= Có lớn hơn hay bằng không? a>=b < Có nhỏ hơn không? a<b <= Có nhỏ hơn hay bằng không? a<=b == Có bằng hay không? a==b != Có khác nhau không? a!=b Các phép toán quan hệ có độ ưu tiên thấp hơn so với các phép toán số học Ngôn ngữ lập trình C
II. Các phép toán • Phép toán logic • Phép phủ định ! • Phép và (AND) && • Phép hoặc (OR) || • Các phép toán quan hệ có độ ưu tiên nhỏ hơn so với ! nhưng lớn hơn so với phép && và || Ngôn ngữ lập trình C
Câu lệnh gán và biểu thức Cú pháp của lệnh gán: <tên biến> = <biểu thức>; VD: x = -10; m = y + 2 – m; Trong C cho phép người sử dụng được gộp lệnh gán theo cú pháp : a = b = c = 7; Ngôn ngữ lập trình C
Phép toán tăng giảm • Toán tử + + : dùng để tăng giá trị của các biến nguyên hay biến thực • Toán tử - - dùng để giảm giá trị của biến nguyên hay biến thực • Toán tử + + và -- đều có thể đứng trước hoặc sau toán hạng • VD: + + n ; n+ +; --m ; m--; • Khi các toán tử + +, -- đứng trước toán hạng thì giá trị của toán hạng được tăng hoặc giảm trước khi sử dụng và ngược lại nếu toán tử ++, -- đứng sau toán hạng thì toán hạng được tăng hay giảm sau khi thực hiện Ngôn ngữ lập trình C
Chuyển đổi kiểu giá trị Việc chuyển đổi kiểu giá trị trong C thường diễn ra tự động trong trường hợp sau: • Trong biểu thức có các toán hạng khác kiểu • Khi gán một giá trị kiểu này cho một giá trị kiểu khác • Ngoài ra ta có thể dùng phép chuyển kiểu để ép kiểu dữ liệu sang kiểu khác (type) biểu_thức Chú ý: - Khi chuyển đổi kiểu tỏng biểu thức thì đối với toán hạng có kiểu thấp hơn sẽ được nâng thành kiểu cao hơn trược khi htực hiện phép toán và kết quả thu được sẽ có kết quả theo kiểu cao hơn Ngôn ngữ lập trình C
Kiểu int và kiểu long thì int ----> long • int và float thì int ---> float • Float và double thì float -----> double • Kiểu int có thể chuyển thành float và ngược lại Ngôn ngữ lập trình C
Bài 3Các hàm vào ra dữ liệu I.Hàm xuất nhập chuẩn trong thư viện <stdio.h> • Hàm đưa kết quả ra màn hình Cú pháp: printf(<dòng điểu khiển>, bt1, bt2,...btk); Ý nghĩa: bt1,...btk : là k biểu thức cần in kết quả ra màn hình <dòng điểu khiển> là một hằng xâu ký tự bao gồm 3 loại: • Ký tự diều khiển việc xuống dòng tiếp theo ‘\n’ • Ký tự hiển thị: là ký tự được in ra màn hình • Ký tự mô tả cách đưa ra màn hình của các biến(đặc tả của kiểu). Mỗi biểu thức có đặc tả tương ứng Ngôn ngữ lập trình C
Đặc tả kiểu nguyên đối với biểu thức có giá trị kiểu số nguyên %[n]d . Trong đó n là số nguyên xác định độ rộng tối thiểu dành cho giá trị biểu thức in ra màn hình • Đặc tả kiểu số thực %[n][.m]f. Trong đó m là số chữ số sau dấu phẩy, n là một số nguyên xác định độ rộng tối thiểu trên màn hình cho giá trị của biểu thức: VD: Ngôn ngữ lập trình C
%c : in một ký tự có mã ASCII tương ứng • %[n]d : in một số nguyên với chiều dài tối thiểu là n • %[n]ld: in một số nguyên (long int) • %[n.m]f : in một số thực vối chiều dài n và lấy m số thập phân • %s : in ra chuỗi ký tự Ngôn ngữ lập trình C
Hàm hiển thị một xâu ký tự ra màn hình Cú pháp:int puts(char *s); Ý nghĩa: Hiển thị một xâu ký tự s lên màn hình, sau khi in xong thì con trỏ sẽ được chuyển xuống dòng. Trong đó s là con trỏ kiểu char trỏ tới vùng chứa xâu ký tự • Hàm đưa một ký tự ra màn hình Cú pháp: int putchar(int ch); Ý nghĩa: Hàm sẽ ký tự ch ra màn hình với ch là mã của lý tự cần in Ngôn ngữ lập trình C
Hàm nhận dữ liệu từ bàn phím Cú pháp: scanf(“dt1dt2..dtk”, &biến1, ...&biếnk); Ý nghĩa: • dt1,...dtk là một hằng xâu ký tự đặc tả của k biến • &biến1, ..&biếnk: là địa chỉcủa biến trong bộ nhớ • Hàm nhận từ bàn phím một xâu ký tự Cú pháp: int *getchar(char *s); Ý nghĩa: • Hàm nhận dãy ký tự từ bàn phím vào cho đến khi gặp ký tự ‘\n’ thì dừng lại • s là con trỏ trỏ tới vùng nhớ sẽ chứa xâu vừa nhận Ngôn ngữ lập trình C
Hàm nhận một ký tự từ bàn phím Cú pháp: getchar(void); Ý nghĩa: nhận ký tự được nhập từ bàn phím Ngôn ngữ lập trình C
II. Hàm xuất nhập chuẩn trong thư viện <conio.h> • Hàm getch() và getche Cú pháp : int getch( void ) int getche( void ) - Hai hàm trên chờ nhận một ký tự trực tiếp từ bộ đệm bàn phím. Nếu bộ đệm rỗng thì chờ. Khi một phím được ấn thì nhận ngay ký tự đó mà không cần phải enter như các hàm nhập từ stdio.h - Hàm getche() cho hiện ký tự lên màn hình còn getch() thì không - Kết quả trả về của hàm là ký tự được ấn trên bàn phím. Ngôn ngữ lập trình C
Xuất ký tự có màu Cú pháp : cprintf Ý nghĩa: in ra ký tự có màu được ấn định bởi hàm textcolor. • Nhập ký tự có màu Cú pháp:cscanf Ý nghĩa: + Nội dung nhập có màu được ấn định bởi hàm textcolor + Nhận nội dung trực tiếp từ bộ đệm bàn phím. Vì vậy với hàm cscanf ta cũng phải khử ký tự \n trong bộ đệm bằng %*c hoặc bằng hàm getch() Ngôn ngữ lập trình C
III.Một số hàm thao tác trên màn hình • Hàm xóa màn hình: clrscr(); Có tác dụng xóa toàn bộ m àn hình và sau khi xóa con trỏ sẽ ở vị trí góc phía bên trái. • Hàm đặt tọa độ con trỏ: gotoxy(int x, int y); Đặt con trỏ tại vị trí x, y • Hàm đặt mầu nền textbackground void textbackground(int color); Đặt mầu nền Color là một biểu thức nguyên có giá trị từ 0 đến 7 tương ứng với một trong 8 hằng số màu đầu tiên của bảng mầu văn bản. Ngôn ngữ lập trình C
Hàm đặt mầu chữ textcolor void textcolor(int newColor); Lựa chọn màu ký tự mới newColor.Trong đó newColor là một biểu thức nguyên có giá trị từ 0 đến 15 tương ứng với một trong các hằng số màu của bảng mầu văn bản. Ngôn ngữ lập trình C
Bài 4: Cấu trúc điều khiển • Câu lệnh, khối lệnh • Câu lệnh: mỗi câu lệnh thực hiện một công việc và được kết thúc bởi dấu ; • Khối lệnh: là tập hợp các câu lệnh bắt đầu bằng dấu “{“ và kết thúc bằng dấu “}” Ngôn ngữ lập trình C
I. Cấu trúc điều khiển if 1. Cấu trúc if dạng 1 Cú pháp: if (bt) s ; Ý nghĩa: bt là biểu thức lôgic, s là lệnh đơn hoặc lệnh phức. nếu bt nhân giá trị true thì thực hiện s, ngược lại s được bỏ qua 2. Cấu trúc if dạng 2 Cú pháp: if(bt) s; else s1 ; Ý nghĩa: bt là biểu thức lôgic, nếu bt nhận giá trị true thì thực hiện s bỏ qua s1, ngược lại nếu bt nhận giá trị flase thì thực hiện s1 bỏ qua s(s và s1 có thể là lệnh đơn hoặc lệnh phức) Ngôn ngữ lập trình C
Chú ý : trong C cho phép sử dụng các cấu trúc if lồng nhau để giải quyết bài toán 3. Bài tập - Nhập 2 số thực a, b từ bàn phím. Tìm và in ra màn hình số lớn nhất và số bé nhất • Giải hệ phương trình bậc nhất hai ẩn số ax + by = c dx + ey = f Ngôn ngữ lập trình C
II. Cấu trúc rẽ nhánh switch 1. Cấu trúc tổng quát Cú pháp: switch (bt) { case n1 : s1 case n2 : s2 .... case nk : sk [default : s(k+1 )] } Ngôn ngữ lập trình C
Ý nghĩa: • Bt: là biểu thức toán học có giá trị kiểu nguyên • Ni(i=1..k): là các số kiểu nguyên, kiểu hằng ký tự, hoặc biểu thức • Si(i=1..k): là các lệnh đơn hoặc lệnh phức • [default : s(k+1 )] : là phần tuỳ chọn có thể có hoặc không Ngôn ngữ lập trình C
Hoạt động: lệnh switch phụ thuộc vào giá trị của biểu thức bt viết sau switch, nếu: • Giá trị bt = ni thì thực hiện câu lệnh sau case ni; • Khi giá trị biểu thức khác tất cả các ni thì thực hiện câu lệnh sau default nếu có, hoặc thoát khỏi câu lệnh switch. • Khi chương trình đã thực hiện xong câu lệnh của case ni nào đó thì nó sẽ thực hiện luôn các lệnh thuộc case bên dưới nó mà không xét lại điều kiện ( do các ni còn được xem như các nhãn). Vì vậy, để chương trình thoát khỏi lệnh switch sau khi thực hiện xong một trường hợp, ta dùng lệnh break. Ngôn ngữ lập trình C
3. Bài tập - Viết chương trình nhập vào từ bàn phím một mã số nguyên và đưa ra đánh gía trình độ theo yêu cầu: • 1: trình độ sơ cấp • 2 : trình độ trung cấp • 3: trình độ Đại học • 4: trình độ Cao học • 5: trình độ Tiến sỹ • Các số khác: Không xác định - Cho một số tự nhiên, in ra màn hình tên gọi của số lên màn hình(Bài số 12) Ngôn ngữ lập trình C
III. Câu lệnh lặp for 1. Cú pháp: for(<bt1> ; <bt2> ; <bt3>) S ; Ý nghĩa: • S là lệnh đơn hoặc lệnh phức • bt1 : thường là một lệnh gán khởi tạo cho biến điều khiển • bt2: là biểu thức logic, giá trị của biểu thức lôgic này quyết định vòng lặp tiếp tục hay kết thúc • bt3: thường là lệnh gán có tác dụng làm thay đổi giá trị của biến điều khiển Ngôn ngữ lập trình C
Hoạt động: • Bước 1: Thực hiện bt1 • Bước 2: Tính toán, xác định giá trị của bt2 • Bước 3: Nếu bt2 có giá trị false thì thoát khỏi vòng lặp. Ngược lại bt2 có giá trị true thì s được thực hiện • Bước 4: sau khi thực hiện s thực hiện bt3 và quay lại bước 2 Nhận xét: • <t1> chỉ được thực hiện duy nhất một lần khi bắt đầu vòng lặp • <bt2>, <bt3> và S có thể được tính toán và thực hiện lặp nhiều lần Ngôn ngữ lập trình C