Một số kiến thức cơ sở về lập trình bằng ngôn ngữ C ppt

153 597 0
Một số kiến thức cơ sở về lập trình bằng ngôn ngữ C ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 Một số kiến thức sở về lập trình bằng ngôn ngữ C 2 CHƯƠNG 1: SỞ NGÔN NGỮ C I. Phần mở đầu Nội dung:  Giới thiệu ngôn ngữ C & C++  Lập trình hướng đối tượng (Object oriented programming)  sở về phần cứng và phần mềm để thực hiện chương trình C. Giới thiệu ngôn ngữ C & C++ - Cmột loại ngôn ngữ lập trình bậc cao đa dụng phổ biến nhất hiện nay. - C được phát triển từ ngôn ngữ B (K. Thompson, 1967) bởi Dennis Ritchie của hãng AT&T Bell Labs và bắt đầu xuất hiện từ năm 1972. - Yêu cầu của ngôn ngữ bậc cao: tính dễ đọc-viết (readability), tính dễ bảo trì (maintainability) và khả năng linh động (portability).  C là ngôn ngữ lập trình độc lập với phần cứng và các hệ điều hành máy tính. - 1978: quyển sách The C Programming Language (Kernighan & Ritchie) là tài liệu kinh điển của ngôn ngữ C. - 1983: American National Standards Institute (ANSI) thành lập ủy ban xây dựng chuẩn cho ngôn ngữ C. - 1990: Chuẩn ANSI C ra đời. - 1983: yếu tố lập trình hướng đối tượng + Cngôn ngữ C++ do Bjarne Stroustrup phát triển ở Bell Labs. - C++ là một ngôn ngữ gần như là mở rộng của ngôn ngữ C, đã 3 phiên bản: 1.1 (1986), 2.0 (1989) và 3.0 (1991). Chính phiên bản 3.0 là sở để xây dựng chuẩn ANSI C++ . Lập trình hướng đối tượng (Object Oriented Programming) - Phương pháp lập trình: * LT tuyến tính (linear) * LT thủ tục (procedural) LT cấu trúc (structural) (Chương trình = Cấu trúc dữ liệu + Giải thuật) * LT hướng đối tượng (object-oriented) 3 - Đặc điểm LTHĐT: * Đối tượng (Object): Dữ liệu + phương thức  trọng tâm của quá trình phát triển chương trình. * Lớp (Class): tập hợp các đối tượng tính chất chung giống nhau. * Tính đóng gói dữ liệu (encapsulation): đối tượng bao gồm dữ liệu và phương thức được đóng gói mà người sử dụng thể tiếp cận đến dữ liệu thông qua các chức năng mà không cần biết đến nọi dung lập trình cụ thể của chúng. * Tính kế thừa (inheritance): Sự kế thừa cho phép định nghĩa các lớp mới dựa trên các lớp sẵn  cho phép sử dụng lại các module chương trình mà không cần thay đổi chúng. * Tính đa hình (polymorphism): trong các lớp kế thừa nhau, thể định nghĩa phương thức cùng tên hoặc ý nghĩa nhưng hoàn toàn khác nhau về mặt lập trình. - Ưu điểm: * Tính kế thừa  loại bỏ những đoạn chương trình phải viết lại, mở rộng các lớp nhanh chóng. * sở chương trình là đối tượng  việc thiết kế và lập trình thực hiện theo quy trình chứ không theo kinh nghiệm hoặc thủ thuật  tiết kiệm thời gian và tăng năng suất. * Tính đóng gói  đảm bảo tính bảo mật mà vẫn phát triển chương trình được. * Cách tiếp cận đặt trọng tâm đối tượng  thể xây dựng mô hình chi tiết và dễ cài đặt. * Khả năng mở rộng hệ thống lớn hơn khả thi hơn. - Ngôn ngữ LTHĐT: Cơ sở về phần cứng và phần mềm để thực hiện chương trình C Phần cứng: * Các loại máy tính phần mềm biên dịch ngôn ngữ C &C++ (tương thích ANSI SIMULA (66) SMALLTALK (71) SMALLTALK (80) JAVA (95) ADA (83) ADA (95) EIFFEL (90) C++ (86) 4 C) * Đối với PC, cấu hình máy phù hợp với chương trình biên dịch ngôn ngữ. Phần mềm: * Các loại máy sử dụng HĐH Unix, Cngôn ngữ mặc định. * Đối với PC: Turbo C, Turbo C++, Borland C++, Symantec C, Visual C++, C++ Builder… II. Chương trình C đầu tiên Nội dung: Với phần này ta làm quen với cấu trúc của một chương trình C và các thành phần cấu tạo nên nó:  Chú thích  Chỉ thị #include  Tập Header  Hàm main()  Lệnh return  Hàm exit()  Kiểu dữ liệu void  Biên dịch và kết nối  Dò sửa lỗi Ví dụ đơn giản chương trình C 1: /* Chuong trinh dau tien */ 2: #include <stdio.h> 3: 4: main() 5: { 6: printf ("Chao ban! Day la chuong trinh C dau tien cua toi.\n"); 7: return 0; 8: } Chú thích Trong ngôn ngữ C, hàng chú thích được giới hạn giữa hai dấu /* và */. Trình phiên dịch C sẽ bỏ qua tất cả nôi dung chứa trong cặp dấu trên. /* Chuong trinh dau tien */ 5 Đối với C++, ta thể sử dụng // ở đầu mỗi hàng chú thích. /* This comment does not increase the size of the executable file (binary code), nor does it affect the performance speed. */ Tương đương với: // This comment does not increase the size of // the executable file (binary code), nor does // it affect the performance speed. Chú ý: Các đoạn chú thích không được phép lồng vào nhau. Chỉ thị #include #include <stdio.h> Chỉ thị #include tác dụng bảo bộ tiền xử lý C tìm tập tin ứng với nội dung <tên > và chép nội dung tập tin vào vị trí của include trong chương trình. Các tập tên ứng với nội dung trong < > thường là các tập tin header ứng với những hàm thông dụng trong thư viện của C, thường năm trong thư mục INCLUDE\. Nếu các tập header nằm tại thư mục làm việc, ta dùng ngoặc kép “ “ thay cho ngoặc < >. Chú ý : Ngôn ngữ C phân biệt chữ Hoa và chữ thường !!! Hàm main() Hàm main() ở hàng 4 là hàm đặc biệt trong C. Mọi chương trình C phải hàm này và chạy chương trình bắt đầu từ hàm này. Nội dung các dòng lệnh trong hàm nằm giữa ngoặc { }. Trong hàm lệnh đặc biệt return nhiệm vụ trả lại một giá trị nào đó cho hàm. Mặc định nó trả lại một giá trị số nguyên (int). Hàng 5 trả lại giá trị 0, nghĩa là chương trình kết thúc bình thường; nếu giá trị trả lại khác 0, điều đó nghĩa là chương trình kết thúc lỗi. Hàm exit() , hàm sở của thư viện C được định nghĩa trong tập header stdlib.h (khi muốn dùng hàm này, phải gọi #include <stdio.h>), dùng để kết thúc chương trình, nhưng không trả lại giá trị nào cả. Ví dụ: 1: /* Chuong trinh dau tien */ 2: #include <stdio.h> 3: #include <stdlib.h> 4: void main() 6 5: { 6: printf ("Chao ban! Day la chuong trinh C dau tien cua toi.\n"); 7: exit(0); 8: } Trong chương trình trên, hàng 4 thêm từ khóa void để xác định kiểu dữ liệu trống (empty). Nếu void được thêm vào trước tên hàm, hàm sẽ không phải trả lại một giá trị nào cả. Trong trường hợp trên, vì hàm exit(0) không trả giá trị, từ void phải được thêm ở hàng 4. Biên dịch và kết nối (compiling and linking) Lỗi chương trình và dò sửa lỗi (debugging) Khi chương trình nguồn được dịch và kết nối, thể xuất hiện những lỗi cú pháp, lỗi kết nối… mà ta cần phải sửa lại cho đúng trước khi chương trình được dịch thành dạng thi hành được (executable). Các chương trình thường cung cấp cho người sử dụng công cụ dò sửa lỗi (debugger). Sinh viên nên tập làm quen với công cụ này để nâng cao hiệu quả lập trình. III. Các thành phần sở của chương trình C Nội dung: Với phần này ta làm quen với các thành phần sở cấu tạo nên ngôn ngữ C:  Hằng và biến  Biểu thức  Câu lệnh  Cụm câu lệnh  Cấu trúc hàm  Kiểu và tên hàm  Đối số của hàm  Cách gọi hàm Program.c Program.obj Program.exe BIEN DICH (kiem tra cu phap, …) KET NOI (ket noi cac modul thu vien,…) 7 Các thành phần sở Hằng và biến Hằng là đại lượng không thay đổi giá trị trong quá trình thi hành chương trình. Biến là đại lượng mà giá trị của nó thể thay đổi trong quá trình thi hành chương trình. Biểu thức Biểu thức là tổ hợp các hằng, biến và các toán tử xác định các phép toán. (2 + 3*i) / 10 Toán tử số học Ký hiệu Ý nghĩa + Cộng - Trừ * Nhân / Chia % Phần dư (modulo) Câu lệnh Câu lệnh là một tổ hợp nghĩa (ở 2 vế) các biểu thức và chấm dứt bởi dấu chấm phẩy (;). i = (2 + 3) * 10; i = 2 + 3 * 10; j = 6 % 4; k = i + j; return 0; exit(0); printf ("Ket thuc chuong trinh"); Cụm câu lệnh Cụm câu lệnh là nhóm câu lệnh bắt đầu bằng ngoặc { và kết thúc bằng ngoặc }. Cụm câu lệnh được thi hành như một câu lệnh bởi bộ biên dịch C. for(. . .) { s3 = s1 + s2; mul = s3 * c; remainder = sum % c; 8 } Cấu trúc một hàm C Một hàm được cấu tạo bởi 6 phần: - Kiểu hàm - Tên hàm - Đối số - Ngoặc mở { - Thân hàm - Ngoặc đóng } Kiểu hàm là kiểu dữ liệu mà hàm sẽ trả. Mặc định hàm trả kiểu int. Kiểu void se không trả giá gì nào cả. Tên hàm phải nghĩa và đúng cú pháp. Tên không đúng Cú pháp 2 (digit) Tên hàm không được khởi đầu bằng số * (Asterisk) Tên hàm không được khởi đầu bằng dấu + (Addition) Tên hàm không được khởi đầu bằng từ khóa . (dot) Tên hàm không được khởi đầu bằng . total-number Tên hàm không được chứa ký hiệu toán tử account'97 Tên hàm không được chứa dấu ‘ Tên hợp lệ: print2copy, total_number, _quick_add, Method3 Đối số hàm C Đối số là những biến nằm trong ngoặc đơn sau tên hàm. Đối số hàm C chỉ tính tham trị, nghĩa là nó chỉ truyền giá trị vào trong hàm chứ không thay đổi giá trị ngoài hàm. Ví dụ: Hàm cộng 2 số nguyên 1: /* This function adds two integers and returns the result */ 2: int integer_add( int x, int y ) 3: { 4: int result; 5: result = x + y; 6: return result; 7: } Lời khuyên Không nên tạo hàm quá phức tạp và dài, mànên chia nhỏ (tạo nhiều hàm con) ra để dễ dàng theo dõi trong quá trình điều chỉnh hoặc sử lỗi chương trình. Cách gọi hàm 9 Ví dụ: Chương trình tính phép cộng và xuất giá trị lên màn ảnh 1: /* Calculate an addition and print out the result */ 2: #include <stdio.h> 3: /* This function adds two integers and returns the result */ 4: int integer_add( int x, int y ) 5: { 6: int result; 7: result = x + y; 8: return result; 9: } 10: 11: int main() 12: { 13: int sum; 14: 15: sum = integer_add( 5, 12); 16: printf("The addition of 5 and 12 is %d.\n", sum); 17: return 0; 18: } Bài tập 1. Viết một hàm C nhân 2 số nguyên với nhau và trả lại giá trị nhân. 2. Viết chương trình gọi hàm nhân ở BT1 để nhân 3 với 5 và xuất kết quả lên màn ảnh. IV. Kiểu và tên dữ liệu trong C Nội dung: Với phần này ta làm quen với các bốn kiểu dữ liệu sở của ngôn ngữ C:  char  int  float  double Từ khóa Từ khóa là từ dành riêng để xác định một đặc trưng của ngôn ngữ, không được dùng làm biến, hằng hoặc tên hàm. ANSI C 32 từ khóa sau (và chỉ viết bằng chữ thường !!): Keyword Description Keyword Description auto Storage class specifier int Type specifier 10 break Statement long Type specifier case Statement register Storage class specifier char Type specifier return Statement const Storage class modifier short Type specifier continue Statement signed Type specifier default Label sizeof Operator do Statement static Storage class specifier double Type specifier struct Type specifier else Statement switch Statement enum Type specifier typedef Statement extern Storage class specifier union Type specifier float Type specifier unsigned Type specifier for Statement void Type specifier goto Statement volatile Storage class modifier if Statement while Statement Kiểu dữ liệu char Một đối tượng của kiểu char biểu thị một ký tự đơn ứng với bảng mã ký tự 8 bits ASCII. Biến ký tự char variablename; hoặc: char variablename1, variablename2, variablename3; Format Ký tự: %c Hằng ký tự x = `A'; x = 65; hoặc x = `a'; x = 97; Ký tự thóat (\) Ký tự Mô tả \b BACKSPACE \f Kết thúc trang (form- feed) [...]... không đư c chứa ký hiệu đ c biệt như *, @, #, ?, v.v C nh báo Không bao giờ dùng từ khóa c a C ho c tên c c hàm thư viện C làm tên biến m cc thể đư c Bài tập 1 Viết chương trình xuất c c giá trị số c a c c ký tự Z và z 2 Viết chương trình xuất c c c c ký tự c giá trị số 72 and 104 3 Cho số double dbl_num = 123.456;,viết chương trình xuất giá trị trên theo format float và doule 4 Viết chương trình. .. c1 to character: A Convert the value of c2 to character: a Ví dụ: Biến đổi số thành ký tự (dùng format %c) 1: /* Converting numeric values back to characters */ 2: #include 3: 4: main() 5: { 6: char c1 ; 7: char c2 ; 8: 9: c1 = 65; 10: c2 = 97; 11: printf("The character that has the numeric value of 65 is: %c. \n", c1 ); 12: printf("The character that has the numeric value of 97 is: %c. \n", c2 );... xuất giá trị bằng số c a ký tự xuống hàng (\n) V Đ c và viết qua c c giao tiếp nhập xuất (I/O) chuẩn Nội dung: Với phần này ta tìm hiểu kỹ hơn với lệnh printf() c ng như c c lệnh nhập xuất sau: Hàm getc() Hàm putc() Hàm getchar() Hàm putchar() C c giao tiếp nhập xuất chuẩn (I/O) Ngôn ngữ C xử lý một tập tin như một chuỗi byte (8 bits), gọi là stream và c thể thu nhận ho c ghi lại nó qua c c giao tiếp... \t Xuất c c ký tự Dùng hàm printf(), địnhnghi4a trong stdio.h, để xuất lên màn ảnh Ví dụ: In c c ký tự lên màn ảnh 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: /* Printing out characters */ #include main() { char c1 ; char c2 ; c1 = `A'; c2 = `a'; printf("Convert the value of c1 to character: %c. \n", c1 ); printf("Convert the value of c2 to character: %c. \n", c2 ); return 0; } Kết quả: Convert... 5: { 6: int ch1, ch2; 7: 8: printf("Please type in two characters together:\n"); 9: ch1 = getc( stdin ); 10: ch2 = getchar( ); 11: printf("The first character you just entered is: %c\ n", ch1); 12: printf("The second character you just entered is: %c\ n", ch2); 13: return 0; 14: } Kết quả: Please type in two characters together: Hi The first character you just entered is: H The second character you just... Từ khóa chuyển đổi dữ liệu: 35 signed unsigned short long C c hàm toán h c c bản: Hàm sin(), cos(), tan() Hàm pow(), sqrt() Từ khóa chuyển đổi signed signed char ch; Biến char c ng hòa c dấu,nghĩa là khoảng giá trị c a nó sẽ là -128 đến 127 Biến char không dấu c khoảng từ 0 – 255 Ghi chú Để chuyển một số dương thành 1 số âm ở dạng nhị phân, ta lấy phần bù c a số dương dạng nhị phân rồi c ng thêm... main() { putchar(65); putchar(10); putchar(66); putchar(10); putchar(67); putchar(10); return 0; } Kết quả: A B C Hàm printf() #include int printf(const char *format-string, ); VD: printf("The sum of two integers %d + %d is: %d.\n",a,b ,c) ; C c đ c tả format dùng với printf(): %c Ký tự %d Số nguyên %i Số nguyên (như %d) %f Số th c dấu phẩy động %e Số th c dạng a.aaae+bbb %E Số th c dạng a.aaaE+bbb... liệu số th c độ chính x c gấp đôi Số th c 64 bits, c ít nhất 10 số lẻ thập phân Biến double double double variablename; variablename1, variablename2, variablename3; Format double: %e, %E Quy ư c đặt tên biến 13 C c ký tự sau đây đư c dùng đặt tên biến: A-Z, a-z, 0-9 (nhưng không đư c đặt đầu), dấu gạch dưới (_) Biến không đư c chứa ký hiệu toán tử Biến không đư c chứa dấu (.) Biến không đư c chứa... Exercises 1 Phân biệt c gì kh c: for (i=0, j=1; i . Một số kiến th c c sở về lập trình bằng ngôn ngữ C 2 CHƯƠNG 1: C SỞ NGÔN NGỮ C I phần c sở c a chương trình C Nội dung: Với phần này ta làm quen với c c thành phần c sở c u tạo nên ngôn ngữ C:  Hằng và biến  Biểu th c  C u

Ngày đăng: 14/03/2014, 21:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan