1. Trang chủ
  2. » Công Nghệ Thông Tin

chuong 1-3 docx

28 315 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 786 KB

Nội dung

CHƯƠNG 1. MỘT SỐ KHÁI NIỆM CƠ BẢN VỀ LẬP TRÌNH 1. Thuật toán (Algorithm) 1.1. Khái niệm - Thuật toán là khái niệm cơ sở của toán học và tin học. - Thuật toán là phương pháp thể hiện lời giải của vấn đề - bài toán. - Thuật toán là dãy các thao tác, các hướng dẫn rõ ràng, được sắp xếp theo một trình tự xác định, sao cho 2 bộ xử lý (người/máy) khác nhau, với cùng điều kiện đầu vào như nhau thì sau một số bước hữu hạn thực hiện, sẽ cho kết quả giống nhau mà không cần biết ý nghĩa của các thao tác này. Cần chú ý là không phải mọi dãy thao tác, chỉ dẫn nào cũng đều tạo ra thuật toán. Phương pháp nấu ăn, cách dùng thuốc,. đều không phải là thuật toán do các thao tác, các chỉ dẫn là không xác định, không rõ ràng. 1.2. Các đặc trưng của thuật toán Tính xác định: Các thao tác của thuật toán phải xác định, không được nhập nhằng, mơ hồ để có thể dễ dàng cài đặt trên một hệ tự động hóa. Tính dừng: Thuật toán phải dừng sau một số hữu hạn bước thực hiện. Tính đúng đắn: Thuật toán phải cho kết quả đúng theo yêu cầu của bài toán đặt ra. Tính phổ dụng: Thuật toán có thể được sử dụng lại để giải một lớp bài toán tương tự. Tính hiệu quả: Thuật toán cần tối ưu về sử dụng bộ nhớ và đáp ứng yêu cầu của bài toán trong thời gian ngắn nhất có thể được. Thực tế rất khó đạt được cả 2 yêu cầu này trong một thuật toán. 1.3. Các công cụ biểu diễn thuật toán Ngôn ngữ tự nhiên: là ngôn ngữ liệt kê các bước, mô tả thuật toán theo ngôn ngữ tự nhiên của con người. Ví dụ: Thuật toán xác định trị lớn nhất trong 5 số nguyên. B1. Gọi a, b, c, d, e là 5 biến lưu trữ các trị nguyên cho trước (nhập từ bàn phím). B2. Gọi max là biến lưu trữ trị lớn nhất trong 5 số nguyên trên, và giả sử a có trị lớn nhất. B3. Lần lượt so sánh trị của max với các biến b, c, d, e còn lại. Nếu trị của max nhỏ hơn bất kỳ biến nào thì gán trị của biến đó cho max. B4. Xuất kết quả trị biến max ra màn hình Lưu đồ thuật toán hay sơ đồ khối (Flow chart): là công cụ cho phép biểu diễn thuật toán một cách trực quan. Thường chỉ có thể dùng công cụ lưu đồ đối với các thuật toán tương đối ngắn, có thể được biểu diễn trong một trang giấy. Các hình cơ bản sử dụng trong lưu đồ: Mã giả (Pseudo code) gần giống như ngôn ngữ tự nhiên, nhưng có sử dụng các cấu trúc chuẩn hóa (khai báo biến, chú thích, cấu trúc điều khiển, . . .) do người thiết kế quy định. Ngôn ngữ lập trình (Programming language) là hệ thống các ký hiệu cho phép mô tả các quy trình tính toán dưới dạng văn bản. 2. Ngôn ngữ lập trình (NNLT) Các thành phần cơ bản của NNLT bao gồm: - Bộ kí tự (character set) hay bảng chữ cái dùng để viết chương trình. - Cú pháp (syntax) là bộ quy tắc để viết chương trình. - Ngữ nghĩa (semantic) xác định ý nghĩa các thao tác, hành động cần phải thực hiện, ngữ cảnh (context) của các câu lệnh trong chương trình. - Hiện đã có hàng nghìn NNLT được thiết kế, và hàng năm lại có thêm nhiều NNLT mới xuất hiện. Sự phát triển của NNLT gắn liền với sự phát triển của ngành tin học. Mỗi loại NNLT phù hợp với một số lớp bài toán nhất định. Phân loại NNLT: Ngôn ngữ máy (machine language) hay còn gọi là NNLT cấp thấp có tập lệnh phụ thuộc vào một hệ máy cụ thể. Chương trình viết bằng ngôn ngữ máy sử dụng bảng chữ cái chỉ gồm 2 kí tự 0, 1. Chương trình ngôn ngữ máy được nạp trực tiếp vào bộ nhớ và thực hiện ngay. Ngôn ngữ lập trình cấp cao nói chung không phụ thuộc vào loại máy tính cụ thể. Chương trình viết bằng NNLT cấp cao sử dụng bộ kí tự phong phú hơn, và phải được chuyển đổi sang dạng mã máy để máy tính có thể hiểu được bằng chương trình dịch. Một số NNLT cấp cao thông dụng hiện nay: Pascal, C, C++, Java, Smalltalk, Basic, Ruby, Fortran, Algol, Lisp, Prolog, Cobol, … 3. Chương trình (máy tính) Là tập hợp hữu hạn các chỉ thị máy được bố trí, sắp xếp theo một trật tự xác định, nhằm giải quyết yêu cầu của bài toán đặt ra. Chương trình được viết bằng một NNLT cụ thể nào đó. Các chương trình C/C++ (trong môi trường DOS) được tạo ra bằng 1 trình soạn thảo văn bản (EDITOR) như: SK, NC Editor, VRES . . . Hiện nay, các chương trình dịch đều tích hợp sẵn editor riêng cho phép USER soạn thản, biên dịch, kiểm lỗi, liên kết và thực hiện chương trình một cách dễ dàng. Các chương trình này (mã nguồn - source code), thực chất là ở dạng ngôn ngữ tự nhiên, do đó phải được biên dịch lại dưới dạng mã máy (object code) mà máy tính có thể hiểu được. Việc này được thực hiện bởi chương trình dịch. Có 2 loại chương trình dịch: Trình thông dịch (interpreter): mỗi lệnh được dịch sang mã máy và cho thực hiện ngay. Trình biên dịch (compiler): toàn bộ chương trình nguồn được dịch sang mã máy (tập tin.obj), sau đó trình liên kết (linker) sẽ kết nối các module chương trình để tạo thành tập tin EXE. 4. Các bước xây dựng chương trình B1. Xác định đúng yêu cầu của bài toán: Cần xác định phạm vi, các giới hạn, ràng buộc, các giả thiết của bài toán. Đặc biệt cần khắc phục sức ì về mặt tâm lý trong quá trình tìm hiểu bài toán. B2. Xây dựng thuật giải: Cần có kiến thức liên quan đến vấn đề đang giải quyết. Cần xác định rõ thuật toán sẽ tác động trên những đối tượng (thông tin) nào ? Có bao nhiêu đối tượng (biến) cần xử lý? Mỗi biến có thể được lưu trữ dưới dạng nào, kiểu gì ? Giá trị ban đầu của các biến ? Hình dung trước kết xuất DL sau khi xử lý sẽ như thế nào? B3. Thể hiện thuật giải bằng lưu đồ thuật toán (nếu được). B4. Cài đặt thuật toán bằng một NNLT cụ thể: Dùng một trình soạn thảo VB để tạo chương trình nguồn (source code) theo một NNLT nào đó. B5. Thử nghiệm thuật toán, nếu sai quay lại B2. Cần xác định lỗi của thuật toán thuộc loại nào: lỗi về mặt cú pháp (syntax error), lỗi lúc thực hiện chương trình (run-time error), và lỗi logic. Lỗi cú pháp xảy ra lúc biên dịch chương trình, do vi phạm các quy định về mặt cú pháp của NNLT đang sử dụng. Lỗi này tương đối dễ khắc phục. Lỗi run- time error như: divide by zero, stack overflow, không đủ bộ nhớ, … Lỗi logic (logic error) khó phát hiện hơn nhiều. B6. Kết thúc. 5.Tạo mới chương trình C/C++: Cách 1: - Chọn menu FileNew: (có thể bỏ bước này) −Xuất hiện hộp thoại New. Chọn mục Win32 Console Application, sau đó cung cấp tên và thư mục nơi sẽ lưu project và click vào nút OK. Chọn mục An empty project, sau đó ấn nút Finish. Tạo le mới có tên dạng *.cpp, chọn menu FileNew Chọn mục C++ Source File, và đặt tên file trong hộp văn bản File name (Không cần gõ phần mở rộng .cpp), sau đó chọn OK. Cách 2: −Click vào biểu tượng “New Text File” Chọn menu FileSave, hoặc ấn tổ hợp phím CTRL+S, hoặc Click vào biểu tượng “Save”. Lưu tập tin, nhớ chú ý tên phần mở rộng phải là “.cpp” Chương 2: CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ C 1.Bộ chữ viết trong C Bộ chữ viết trong ngôn ngữ C bao gồm những ký tự, ký hiệu sau: (phân biệt chữ in hoa và in thường): - 26 chữ cái latinh lớn A,B,C Z - 26 chữ cái latinh nhỏ a,b,c z. - 10 chữ số thập phân 0,1,2 9. - 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. 2.Các từ khoá 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ừ. Ta không được dùng từ khóa để đặt cho các tên của riêng 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 Chú ý: -Không được dùng các từ khóa để đặt tên cho các hằng, biến mảng, hàm -Từ khóa phải được viết bằng chữ thường. 3.Cặp dấu ghi chú thích Khi viết chương trình đôi lúc ta cần phải có vài lời ghi chú về 1 đoạn chương trình nào đó để dễ nhớ và dễ điều chỉnh sau này; nhất là phần nội dung ghi chú phải không thuộc về chương trình (khi biên dịch phần này bị bỏ qua). Trong ngôn ngữ lập trình C, nội dung chú thích phải được viết trong cặp dấu /* và */. Ví dụ : #include <stdio.h> #include<conio.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; } 4.Các kiểu dữ liệu sơ cấp chuẩn trong C Các kiểu dữ liệu sơ cấp chuẩn trong C có thể được chia làm 2 dạng : kiểu số nguyên, kiểu số thực. 4.1. 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 4.1.1. Kiểu số nguyên 1 byte (8 bits) Kiểu số nguyên một byte gồm có 2 kiểu sau: 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. 4.1.2. Kiểu số nguyên 2 bytes (16 bits) Kiểu số nguyên 2 bytes gồm có 4 kiểu sau: 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. 4.1.3. Kiểu số nguyên 4 byte (32 bits) 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: Kiểu long : Lưu các số nguyên từ -2147483658 đế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ị của biến này có thể là số âm. Kiểu unsigned long: Kiểu unsigned long lưu các số nguyên dương từ 0 đến 4294967295 4.2. 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: 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. 4.3. Kiểu không xác định (void) Kiểu không xác định có thể gán cho bất kỳ một biến có kiểu nào và thường dùng để biểu diễn kết quả trả về của hàm hay của con trỏ. 5. Tên và hằng trong C 5.1 Tên (danh biểu) Tên hay còn gọi là danh biểu (identifier) được dùng để đặt cho chương trình, hằng, kiểu, biến, chương trình con Tên có hai loại là tên chuẩn và tên do người lập trình đặt. Tên chuẩn là tên do C đặt sẵn như tên kiểu: int, char, float,…; tên hàm: sin, cos Tên do người lập trình tự đặt để dùng trong chương trình của mình. Sử dụng bộ chữ cái, chữ số và dấu gạch dưới (_) để đặt tên, nhưng phải tuân thủ quy tắc: - Bắt đầu bằng một chữ cái hoặc dấu gạch dưới. - Không có khoảng trống ở giữa tên. - Không được trùng với từ khóa. - Độ dài tối đa của tên là không giới hạn, tuy nhiên chỉ có 31 ký tự đầu tiên là có ý nghĩa. - Không cấm việc đặt tên trùng với tên chuẩn nhưng khi đó ý nghĩa của tên chuẩn không còn giá trị nữa. Ví dụ: tên do người lập trình đặt: Chieu_dai, Chieu_Rong, Chu_Vi, Dien_Tich Tên không hợp lệ: Do Dai, 12A2,… 5.2. Hằng (Constant) Là đại lượng không đổi trong suốt quá trình thực thi của chương trình. Hằng có thể là một chuỗi ký tự, một ký tự, một con số xác định. Chúng có thể được biểu diễn hay định dạng (Format) với nhiều dạng thức khác nhau. 5.2.1 Hằng số thực Số thực bao gồm các giá trị kiểu float, double, long double được thể hiện theo 2 cách sau: - Cách 1: Sử dụng cách viết thông thường mà chúng ta đã sử dụng trong các môn Toán, Lý, …Điều cần lưu ý là sử dụng dấu thập phân là dấu chấm (.); Ví dụ: 123.34 -223.333 3.00 -56.0 - Cách 2: Sử dụng cách viết theo số mũ hay số khoa học. Một số thực được tách làm 2 phần, cách nhau bằng ký tự e hay E. Phần giá trị: là một số nguyên hay số thực được viết theo cách 1. Phần mũ: là một số nguyên Giá trị của số thực là: Phần giá trị nhân với 10 mũ phần mũ. Ví dụ: 1234.56e-3 = 1.23456 (là số 1234.56 * 10 -3 ) -123.45E4 = -1234500 ( là -123.45 *10 4 ) 5.2.2 Hằng số nguyên Số nguyên gồm các kiểu int (2 bytes) , long (4 bytes) được thể hiện theo những cách sau. - Hằng số nguyên 2 bytes (int) hệ thập phân: Là kiểu số mà chúng ta sử dụng thông thường, hệ thập phân sử dụng các ký số từ 0 đến 9 để biểu diễn một giá trị nguyên. Ví dụ: 123 ( một trăm hai mươi ba), -242 ( trừ hai trăm bốn mươi hai). - Hằng số nguyên 2 byte (int) hệ bát phân: Là kiểu số nguyên sử dụng 8 ký số từ 0 đến 7 để biểu diễn một số nguyên. Cách biểu diễn: 0<các ký số từ 0 đến 7> Ví dụ : 0345 (số 345 trong hệ bát phân) -020 (số -20 trong hệ bát phân) - Hằng số nguyên 2 byte (int) hệ thập lục phân: Là kiểu số nguyên sử dụng 10 ký số từ 0 đến 9 và 6 ký tự A, B, C, D, E ,F để biểu diễn một số nguyên. Ký tự giá trị A 10 B 11 C 12 D 13 E 14 F 15 Cách biểu diễn: 0x<các ký số từ 0 đến 9 và 6 ký tự từ A đến F> Ví dụ: [...]... biến, phải đặt các biến này ở đầu của khối lệnh, trước các lệnh gán, … Ví dụ 1: #include #include int bienngoai; /*khai bao bien ngoai*/ int main () { int j,i; /*khai bao bien ben trong chuong trinh chinh*/ clrscr(); i=1; j=2; bienngoai=3; printf("\n Gia7 tri cua i la %d",i); /*%d là số nguyên, sẽ biết sau */ printf("\n Gia tri cua j la %d",j); printf("\n Gia tri cua bienngoai la %d",bienngoai); . ban*/ printf(“Xin chao ban %s ”,ten); printf(“Chao mung ban den voi Ngon ngu lap trinh C”); /*Dung chuong trinh, cho go phim*/ getch(); return 0; } 4.Các kiểu dữ liệu sơ cấp chuẩn trong C Các. #include<conio.h> int bienngoai; /*khai bao bien ngoai*/ int main () { int j,i; /*khai bao bien ben trong chuong trinh chinh*/ clrscr(); i=1; j=2; bienngoai=3; printf(" Gia7 tri cua i la %d",i);

Ngày đăng: 29/06/2014, 12:20

Xem thêm

TỪ KHÓA LIÊN QUAN

w