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
49 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 1229 | Lượt tải: 0
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ự az, AZ, 09, 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:
- ltcb_baigiang02_6889.pdf