Lập trình cơ bản - Các thành phần cơ bản trong ngôn ngữ lập trình

 Các thành phần của một chương trình  Kiểu chương trình  Kiểu chú thích  Quy tắc đặt tên  Một số kiểu dữ liệu cơ bản  Cách khai báo và sử dụng biến, hằng  Một số hàm cơ bản

pdf49 trang | Chia sẻ: nguyenlam99 | Lượt xem: 1201 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Lập trình cơ bản - Các thành phần cơ bản trong ngôn ngữ lập trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CÁC THÀNH PHẦN CƠ BẢN TRONG NGÔN NGỮ LẬP TRÌNH NGÔ QUỐC VIỆT-LÊ ĐỨC LONG 2011 1. Tổng quát về lập trình 2. Khái niệm từ khoá 3. Các kiểu dữ liệu cơ bản 4. Đặt tên, khai báo biến, hằng, và các vấn đề liên quan sử dụng biến/hằng. 5. Nhập xuất dữ liệu 6. Sử dụng toán tử, biểu thức và cách viết một số lệnh cơ bản trong lập trình 7. Một số quy ước lập trình để viết chương trình trong sáng. 2  Sinh viên sẽ nắm vững và vận dụng các kỹ năng cơ bản sau cần cho lập trình  Từ khoá  Các kiểu dữ liệu  Cách ghi chú  Đặt tên và khai báo biến  Phạm vi sử dụng biến  Trình bày cách viết một chương trình dễ đọc và trong sáng. 3 1. Phân tích và xác định nhập-xử lý-xuất (I-P-O) 2. Xác định thuật giải (mã giả hay lưu đồ) 3. Cài đặt với ngôn ngữ lập trình cụ thể 4. Biên dịch (kiển tra cú pháp) và chạy thử 5. Kiểm chứng và hoàn thiện chương trình  Lập trình phần nào đó là ánh xạ cách giải quyết đã xác định sang một ngôn ngữ lập trình. 4  Là yếu tố quan trọng nhất của lập trình  Giúp phân biệt ‘viên ngọc lập trình’ với ‘mớ hỗn độn’.  Phân biệt giữa ‘nghệ sỹ lập trình’ và ‘tên đồ tể lập trình’  Làm sao có ‘phong cách’ ?  Không có cách nào, ngoại trừ một vài nguyên tắc cơ bản:  Hãy đặt tên theo quy ước dễ hiểu  Hãy viết nhiều chú thích khi có thể.  Nguyên tắc vàng: càng rõ ràng, càng đơn giản càng tốt. 5  Không có thầy giáo nào dạy tốt hơn kinh nghiệm làm thực tế.  Luôn viết thật nhiều chú thích khi lập trình. Ngay cả khi viết cho chính mình.  Viết chú thích sẽ:  Giúp tổ chức lại các suy nghĩ.  Giúp nhớ lại những gì đã làm.  Giúp làm việc nhóm hiệu quả.  Luôn đặt tên cho các thành phần của chương trình một cách tường minh và dễ hiểu.  Cần tổ chức và quản lý các tập tin mã nguồn khoa học. 6 7Thực tế Ngôn ngữ lập trình Bắt đầu Điểm vào (thường là hàm main) Kết thúc Kết thúc hàm chính (hàm main) Xử lý vấn đề Các lệnh trong chương trình Xác định trước và không thay đổi, ví dụ: số  (3.1416). Hằng (cố định trong cả chương trình) Thay đổi, ví dụ hệ số a, b, c của phương trình bậc 2 Biến (thay đổi được). Phải khai báo ba biến để có thể gán giá trị mới. Đủ loại dữ kiện Kiểu dữ liệu Giải thích thêm Chú thích trong chương trình  Quy trình xử lý cơ bản của máy tính  Ví dụ: xác định I-P-O của việc nấu cơm.  Bài tập ngắn: xác định I-P-O của giải phương trình bậc 1.  Bài tập: xác định I-P-O của giải phương trình bậc 2. Vẽ lưu đồ thể hiện.  Xem: Giai Phuong Trinh Bac 2 8 Chuyển từ bài toán thành chương trình Dữ liệu của bài toán BÀI TOÁN Quá trình tính toán của bài toán CHƢƠNG TRÌNH Dữ liệu của chƣơng trình Các cấu trúc của chƣơng trình Giá trị đầu vào, đầu ra Biến, hằng Các câu lệnh xử lý Các bước tính toán Input: a, b Output: max (a,b) Nếu a>b thì max  a Ngược lại max  b 9 Dữ liệu của bài toán sẽ đƣợc biểu diễn lại dƣới dạng các biến (variable) của chƣơng trình thông qua các quy tắc xác định của NNLT cụ thể (*) (*) Hoàng Kiếm (2000), Giải một bài toán trên máy tính như thế nào – Tập 1, NXB Giáo dục 10  Là tập các từ dành riêng (nghĩ là không dùng chúng làm của riêng) cho từng nnlt cụ thể. Ví dụ, trong ngôn ngữ C/C++.  Các từ khoá sẽ tham gia như một thành phần của từng câu lệnh. Ngoài ra, mỗi lệnh còn có sự tham gia của biến, hằng và biểu thức. 11 Tập kí tự dùng trong NNLT bậc cao Ngôn ngữ C được xây dựng trên bộ ký tự sau:  26 chữ cái hoa A B C .. Z  26 chữ cái thường a b c .. z  10 chữ số 0 1 2 .. 9  Các ký hiệu toán học + - * / = ( )  Ký tự gạch nối _  Các ký tự khác . , : ; [ ] {} ! \ & % # $ ... Dấu cách (space) dùng để tách các từ. Ví dụ: tiếng VIET NAM có 8 ký tự, còn VIETNAM chỉ có 7 ký tự. Tập kí tự dùng trong NNLT Pascal thì sao ??? 12  Tại sao nên viết: cho dễ hiểu, nhớ là đã làm gì.  Viết ở đâu?  Đầu mỗi tập tin mã nguồn.  Đầu mỗi hàm  Ở các lệnh quan trọng trong hàm (sẽ nói sau).  Viết những gi?  Hàm hay tập tin mã nguồn này làm gì.  In, Output của từng hàm/tập tin mã nguồn. 13  Heading  Author (tác giả)  Purpose (mục đích)  Usage (cách sử dụng)  References (tham khảo)  File Formats (định dạng tập tin)  Restrictions (một số hạn chế-nếu có)  Revision History (phiên bản)  Error Handling (điều khiển lỗi)  Notes (chú thích thêm) 14 15 /* * hello -- program to print out "Hello World". * Not an especially earth-shattering program. * Author: Ngô Quốc Việt * Purpose: Demonstration of a simple program * Usage: * Run the program and the message appears */ #include "stdafx.h" #include int main(int argc, char* argv[]) { // Tell the world hello printf("Hello World!\n"); getchar(); return 0; } 16 17  Luôn dóng cột cho lệnh (hoặc khối lệnh) cho các cấu trúc điều khiển (thảo luận sau).  Không viết hai (hay nhiều) lệnh trên cùng một dòng.  Tránh lồng nhau quá sâu (thảo luận sau).  Tách tập tin mã nguồn lớn (nhiều hơn 1000 dòng lệnh) thành những tập mã nguồn nhỏ  Nguyên tắc vàng: càng rõ ràng, càng đơn giản càng tốt. 18  Mọi kiểu dữ liệu (có hay không có cấu trúc) đều dựa trên các kiểu dữ liệu cơ bản. Cụ thể: char/string, integer, float, double, boolean  Mỗi ngôn ngữ lập trình có khai báo và sử dụng kiểu dữ liệu khác nhau (tuy không nhiều) cho các biến, tham số, hằng.  Lựa chọn kiểu dữ liệu là yếu tố quan trọng trong lập trình cần phải nắm vững miền giá trị, độ chính xác, dung lượng nhớ của kiểu. 19  Các kiểu dữ liệu cơ bản trong C/C++ Nguồn:  Chú ý đặc biệt: kích thước vùng nhớ và miền giá trị của kiểu dữ liệu không hoàn toàn giống nhau giữa các nnlt. 20 Đọc thêm: cách biểu diễn dữ liệu kiểu số thực 21 Kiểu Biểu diễn Giá trị char ‘A’, ‘B’ string “Hello world” short int 2, -8, 30 long int 2L, boolean true, false float 1.12345 double 1.12345, 1E-3 1.12345, 0.001 long double 1.12345, 1E-3 1.12345, 0.001  Sử dụng tên dài (nhưng đừng quá dài) và có nghĩa dễ hiểu. int account //khai báo biến kiểu integer trong C.  Chú thích cho biến  Có kèm thêm kiểu của biến trong tên biến int iAccount; //số tài khoản String sAccount; //tên tài khoản double dbMoney; //số tiền còn bool bFaultTransaction; //giao dịch thất bại.  Luôn có chú thích đầu hàm (hay tập tin mã nguồn) 22  Có thể dùng chữ hoa hay dấu gạch dưới ở đầu các từ có nghĩa. double dbCurrentMoney; //hoặc double db_current_money;  Nên dùng chữ hoa để đặt tên hằng (số, chuỗi, bool, ) MAX_ITEMS, SCREEN_WIDTH  Chỉ dùng các ký tự az, AZ, 09, dấu gạch dưới để đặt tên.  Ký tự đầu tiên phải là chữ.  Không dùng chữ tiếng Việt có dấu để đặt tên. 23  Hầu hết nnlt phân biệt chữ hoa / chữ thường (gọi là case sensitive).  Nghĩa là: nội dung giống nhau, nhưng khác ở chữ hoa, chữ thường ở một vài ký tự cũng được xem là khác nhau  Ví dụ: name và Name. Chúng được xem là hai tên khác nhau.  Hầu hết nnlt: biến, hằng luôn được khai báo và sử dụng sử dụng kèm theo kiểu dữ liệu. 24 Nguyên ly ́thư ́hai !!! Chuyển đổi quá trình tính toán của bài toán Các cấu trúc của chƣơng trình MỌI QUÁ TRÌNH TÍNH TOÁN ĐỀU CÓ THỂ MÔ TẢ VÀ THỰC HIỆN DỰA TRÊN BA CẤU TRÚC CƠ BẢN:  CẤU TRÚC TUẦN TỰ  CẤU TRÚC RẼ NHÁNH  CẤU TRÚC LẶP C. Bohm & G. Jacopini (1966), Flow Diagrams, Turing Machines and Languages With Only Two Formation Rules. In Communications of ACM, Vol.9, Number 5, May 1966. 25 26 Chương trình Hàm hay thủ tục Khối lệnh Lệnh Gán Điều kiện Lặp Biểu thức So sánh Biến Hằng  Biến là nơi lưu trữ giá trị – số nguyên, số thực, kí tự, .  Một biến chỉ có thể lưu được một loại giá trị nhất định  kiểu dữ liệu của biến  Giá trị mà biến đang lưu trữ có thể bị thay đổi nhiều lần trong quá trình chương trình thi hành  Một biến bất kì trong máy tính có 3 thuộc tính:  Tên biến (được đặt tên do người lập trình – gọi là định danh – indentifier)  Kiểu dữ liệu của biến  Giá trị hiện tại mà biến đang lưu trữ  Biến cần phải được khai báo (định nghĩa) trước khi sử dụng Ví dụ: STT 50 Biến có tên STT, kiểu số nguyên, đang lưu trữ giá trị là 50 DiemTB 7.8 Biến có tên DiemTB, kiểu số thực, đang lưu trữ giá trị là 7.8 TenSV “Long” Biến có tên TenSV, kiểu chuỗi kí tự, đang lưu trữ một dòng chữ o Ý nghĩa của biến chỉ được hiểu bởi con người, kô có nghĩa với PC; o Tên biến cần gợi nhớ và thống nhất; o Tên biến phải hợp lệ – tuân thủ theo quy ước của NNLT. 27  Biến (variable): dùng để lưu trữ giá trị có thể thay đổi được (qua lệnh gán)  Cú pháp khai báo biến trong C/C++  Datatype name;  Ví dụ: int iSonguyento; string sName; char cMychar; float fSoFloat;  Mỗi chương trình có thể khai báo nhiều biến theo nhu cầu.  Biến không được đặt trùng tên với từ khoá dành riêng 28  Biến nên được khai báo ở đầu hàm, mặc dù có thể được đặt ở bất cứ đâu (thảo luận sau).  Biến phải được khai báo trước khi sử dụng. #include #include int main() { int height; // Height of a rectangle (in inches) int width; // Width of the rectangle (in inches) int area; // Area of the rectangle (in square inches) height = 3; //lệnh gán giá trị 3 cho biến height width = 5 //lệnh gán giá trị 5 cho biến width area = height * width; //biểu thức printf("Area is %d sq. inches \n", area); /lệnh xem kết quả return 0; } 29 KIỂU DỮ LIỆU (DATA TYPE) Trong NNLT, loại giá trị mà biến lưu trữ được phân thành những kiểu dữ liệu khác nhau Thông thường, trong một NNLT có các kiểu dữ liệu cơ sở sau:  Kiểu dữ liệu số: gồm có 2 loại • Kiểu dữ liệu số nguyên • Kiểu dữ liệu số thực  Kiểu luận lý (logic)  Kiểu kí tự  Kiểu chuỗi kí tự Mỗi kiểu dữ liệu có 1 miền giá trị khác nhau 30 Kiểu số nguyên Có nhiều kiểu số nguyên Tuỳ vào độ lớn của miền giá trị, có:  Số nguyên 8 bit ( 1 byte) • Loại có dấu: -128  127 • Loại không dấu: 0 255  Số nguyên 16 bit (2 byte) • Loại có dấu: - 32,768  32,767 • Loại không dấu: 0 65,535  Số nguyên 32 bit (4 byte) • Loại có dấu: -2,147,483,648  2,147,483,647 • Loại không dấu: 0 4,294,967,295  Một số ngôn ngữ lập trình còn hỗ trợ kiểu số nguyên 64 bit, 128 bit  Kiểu số nguyên k bit sẽ chiếm bộ nhớ k bit dữ liệu -128 1270 2550 Reading(*) 31 Kiểu số nguyên Pascal C 8 bit có dấu shortint N/A 8 bit không dấu byte N/A 16 bit có dấu integer short (int*) 16 bit không dấu word unsigned short (int*) 32 bit có dấu longint long (int) 32 bit không dấu N/A unsigned long (int) Ví dụ một sô ́kiểu dữ liệu sô ́nguyên 32 Có 2 dạng số thực thường gặp  Số thực 32 bit (4 byte) • Miền giá trị: trong khoảng ± 3.4E-38 đến ± 3.4E+38 • Có 8 chữ số có nghĩa sau dấu phẩy  Số thực 64 bit (8 byte) • Miền giá trị: trong khoảng ± 1.7E-308 đến ± 1.7E+308 • Có 16 chữ số có nghĩa sau dấu phẩy  Một số ngôn ngữ lập trình còn hỗ trợ số thực 80 bit (10 byte) Kiểu số thực Reading(*) Loại Pascal Miền giá trị C Miền giá trị 32 bit real 2.9x10-393.4x1039 float 3.4x10-383.4x1038 64 bit double 5.0x10-3241.7x10308 double 1.7x10-3081.7x10308 33 HẰNG (CONSTANT)  Hằng trong chương trình là một giá trị không đổi trong suốt quá trình thi hành  Mục đích của hằng là giúp cho chương trình dễ hiểu hơn, hoặc điều chỉnh chương trình dễ dàng hơn  Hằng phải được khai báo trước khi sử dụng  Hằng gồm 2 thành phần: tên hằng va ̀ giá trị gán cho hằng Có các loại hằng sau: o Hằng số: hằng nguyên, hằng thực – Vd: 2, -8, 30, 2.5, -2.0, 1E-3, o Hằng bool: có 2 giá trị là true và false o Hằng kí tự: có 2 dạng biểu diễn sau  Đặt kí tự trong dấu nháy đơn  Dùng mã ASCII o Pascal: #d (d là mã ASCII ở dạng thập phân) o C: \xFF (FF là mã ASCII ở dạng hexa) o Hằng chuỗi kí tự  Pascal, đặt chuỗi kí tự trong dấu nháy đơn – Vd: „Hello‟  C, đặt chuỗi kí tự trong dấu nháy kép – Vd: “Hello” 34  Hằng (thuộc kiểu dữ liệu bất kỳ): dùng làm sáng tỏ chương trình.  Ví dụ: xem hai đoạn lệnh sau (bằng C/C++) double myMagicNumber, yourNumber; myMagicNumber = 3.1416; /// .. yourNumber = 3.141601 và ---------------------------------------- const float PI = 3.1416; //khai báo hằng double myMagicNumber, yourNumber; //biến myMagicNumber = PI; //lệnh gán yourNumber = PI; //lệnh gán 35  Hằng (thuộc kiểu dữ liệu bất kỳ): dễ thay đổi và bảo trì.  Hằng thường được khai báo ở đầu các tập tin mã nguồn.  Không nên sử dụng trực tiếp giá trị trong chương trình. 36  Thường (trong hầu hết nnlt) kết thúc bằng dấu chấm phẩy ‘;’. Ví dụ:  Khai báo biến: char cMyChar;  Lệnh: cMyChar = ‘V’;  Mỗi lệnh nên được viết trên một hàng. 37 LỆNH GÁN (ASSIGNMENT)  Lệnh gán dùng để thay đổi giá trị hiện thời của biến  Lệnh gán không phải là phép so sánh giữa hai biểu thức, mà là thao tác tính kết quả biểu thức phía bên phải lệnh gán, sau đó đặt kết quả này vào biến ở phía bên trái lệnh gán.  Lệnh gán làm thay đổi giá trị hiện thời của biến và không thể nào lấy lại được giá trị này. Biểu diễn bằng lưu đồ: Ý nghĩa: đưa giá trị của biểu thức vế phải (B) gán vào cho biến ở vế trái (A) A B Cú pháp lệnh gán = ; A  5 A = 5; A  B A = B; A  B + 5 A = B +5; A A + 1 A = A +1; A  (A + B) * C + D A = (A + B) * C + D; Cú pháp trong C: = 38  Biểu thức toán học kết hợp các biến/hằng và các toán tử sau  Ví dụ: 39  Các phép tăng/giảm 1 đơn vị  Phép tăng: ++ hoặc ++  Phép giảm: -- hoặc --  Lưu ý:  Phép toán ++ (hay --) đứng trước tên biến sẽ thực hiện trước  Phép toán ++ (hay --) đứng sau tên biến sẽ thực hiện sau  Ví dụ int iCount = 0; iCount ++; //tăng iCount một đơn vị 40  Ví dụ (tt) int iCount = 3; int t1 = i++; //gán t1 bằng i trước rồi mới tăng i int t2 = ++i; //tăng i rồi mới gán cho t2  Có thể kết hợp các phép toán số học với phép gán. Ví dụ: x += 3 ; // tương đương x = x + 3 x -= 3; // tương đương x = x – 3 x = x * 3; // tương đương x = x *3; x /= 3; // tương đương x = x / 3 41  Biểu thức luận lý được kết hợp với các toán tử sau AND,OR,XOR, NOT.  Kết quả biểu thức logic là: TRUE hoặc FALSE. bool bFlag; //khai báo biến bool trong C/C++ bFlag = true;//gán true cho biến bFlag  TRUE (true) hay FALSE (false) chỉ là macro hay hằng logic trong ngôn ngữ.  Kiểu bool có khi được dùng là boolean.  Cần phân biệt với biểu thức trên BIT. 42 43 Phép toán Ký hiệu trong Pascal Ký hiệu trong C Nhỏ hơn < < Lớn hơn > > So sánh bằng = == Khác nhau != Nhỏ hơn hoặc bằng <= <= Lớn hơn hoặc bằng >= >= Phép not not ! Phép and and && Phép or or || Phép toán Kí hiệu Phép AND & Phép OR | Phép XOR ^ Bù bit ~ Dịch trái << Dịch phải >>  Ví dụ: int x = 5; // x = 101b int y = 4; // y = 100b int r1 = x & y; // r1 = 100b int r2 = x | y; // r2 = 101b int r3 = ~x; // r3 = 010b int r4 = x << 3; // r4 = 101000b int r5 = x >> 1; // r5 = 10b 44 Các phép toán trên BIT  Số nguyên có thể gán cho biến thực  Số thực cũng có thể gán cho biến nguyên, nhưng phần sau dấu chấm sẽ bị mất. 45 Biểu thức Kết quả Kiểu kết quả 19/10 1 Số nguyên 19.0/10 1.9 Số chấm động 19/10.0 1.9 Số chấm động 19.0/10.0 1.9 Số chấm động  Nhập từ bàn phím và xuất ra màn hình 46 Trong C Trong C++ Trong Pascal Nhập Xuất Nhập Xuất Nhập Xuất scanf printf Dùng cin Dùng cout readln writeln Xem thêm C.4. trong B. S. Gottfried (1996), Programming with C, 2nd Ed., SCHAUM’S Outline Series - McGRALL-HILL Hàm Mô tả Kiểu tham số Kiểu trả về abs(x) Tính trị tuyệt đối Số Cùng kiểu tham số exp(x) Tính hàm ex Số Số thực log(x) Tính ln Số Số thực ceil(x) Lấy trần số nguyên Số Số nguyên Floor Lấy sàn số nguyên Số Số nguyên sqrt(x) Căn bậc 2 Số Số thực Pow(x,y) Tính xy Số, Số Số thực 47  Các thành phần của một chương trình  Kiểu chương trình  Kiểu chú thích  Quy tắc đặt tên  Một số kiểu dữ liệu cơ bản  Cách khai báo và sử dụng biến, hằng  Một số hàm cơ bản 48 1. Thực hiện các bài tập trong Ex_Chapter_2.docx. https://sites.google.com/site/ngoquviet/documents 2. Viết chương trình đổi một số nguyên hệ 10 sang hệ 2, hệ 16. 3. Viết chương trình nhập vào số giây từ 0 đến 86399, đổi số giây nhập vào thành dạng "gio:phut:giay", mỗi thành phần là một số nguyên có 2 chữ số . 4. Viết chương trình đọc từ bàn phím 3 số nguyên biểu diễn ngày, tháng, năm và xuất ra màn hình dưới dạng "ngay/thang/nam" (chỉ lấy 2 số cuối của năm). 49

Các file đính kèm theo tài liệu này:

  • pdfltcb_baigiang02_6889.pdf
Tài liệu liên quan