Hiển thị các bài đăng có nhãn Tin Học 11. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Tin Học 11. Hiển thị tất cả bài đăng

Bài 1: Khái niệm về lập trình và ngôn ngữ lập trình

BÀI 1: KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH

1. Ngôn ngữ lập trình

- Ngôn ngữ lập trình là ngôn ngữ dùng để diễn tả thuật toán sao cho máy tính hiểu và thực hiện được.
- Có 3 loại ngôn ngữ lập trình:
  • Ngôn ngữ máy: bao gồm các lệnh được mã hóa bằng các kí hiệu 0 – 1. Chương trình được viết trên ngôn ngữ máy có thể được nạp vào bộ nhớ và thực hiện ngay. Đây cũng là ngôn ngữ duy nhất mà máy tính có thể trực tiếp hiểu và xử lý đ­ựơc.
  • Hợp ngữ: Là loại ngôn ngữ sử dụng một số từ để thực hiện lệnh trên thanh ghi. Hợp ngữ sử dụng các từ viết tắt tiếng Anh để diễn tả câu lệnh.
  • Ngôn ngữ bậc cao: Là loại ngôn ngữ gần với ngôn ngữ tự nhiên, ít phụ thuộc vào loại máy. Các lệnh được mã hóa bằng một ngôn ngữ gần với ngôn ngữ Tiếng Anh.
    • Chương trình viết trên ngôn ngữ bậc cao phải được chuyển đổi thành chương trình trên ngôn ngữ máy mới có thể thực hiện được => Phải sử dụng một chương trình dịch để chuyển đổi.
    • Lập trình bằng ngôn ngữ bậc cao dễ viết hơn vì các lệnh được mã hóa gần với ngôn ngữ tự nhiên. Lập trình trên ngôn ngữ máy rất khó, thường các chuyên gia lập trình mới lập trình được.

2. Lập trình

- Lập trình là việc sử dụng cấu trúc dữ liệu và các lệnh của ngôn ngữ lập trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật toán.

3. Chương trình dịch

- Ch­ương trình dịch là ch­ương trình đặc biệt, có chức năng chuyển đổi ch­ương trình đư­ợc viết bằng ngôn ngữ lập trình bậc cao sang ngôn ngữ máy.

a. Biên dịch (Compiler)

- Biên dịch đượ­c thực hiện qua hai bước
  • Bước 1: Duyệt, phát hiện lỗi, kiểm tra tính đúng đắn của lệnh trong chương trình nguồn.
  • Bước 2: Dịch toàn bộ chương trình nguồn thành một chương trình trên ngôn ngữ máy.
=> Biên dịch thuận tiện cho các chương trình ổn định và cần thực hiện nhiều lần.

b. Thông dịch (Interpreter)

- Thông dịch được thực hiện bằng cách lặp lại dãy các bư­ớc sau:
  • Bước 1: Kiểm tra tính đúng đắn của lệnh tiếp theo trong chương trình nguồn.
  • Bước 2: Chuyển lệnh đó thành ngôn ngữ máy.
  • Bước 3: Thực hiện các câu lệnh vừa được chuyển đổi.
=> Thông dịch phù hợp với môt trường đối thoại giữa người và máy.

Bài 2: Các thành phần của ngôn ngữ lập trình

BÀI 2. CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH

1. Các thành phần cơ bản

- Mỗi ngôn ngữ lập trình thường có ba thành phần cơ bản: bảng chữ cái, cú pháp và ngữ nghĩa.

a. Bảng chữ cái

- Bảng chữ cái là tập các kí hiệu dùng để viết chương trình.
- Trong ngôn ngữ Pascal bảng chữ cái gồm: Các chữ cái trong bảng chữ cái tiếng Anh, các chữ số 0 → 9 và một số kí tự đặc biệt.

b. Cú pháp

- Cú pháp là bộ qui tắc dùng để viết chương trình.

c. Ngữ nghĩa

- Ngữ nghĩa xác định ý nghĩa thao tác cần phải thực hiên, ứng với tổ hợp kí tự dựa vào ngữ cảnh của nó
*Nhận xét:
- Cú pháp cho biết cách viết một chương trình hợp lệ, còn ngữ nghĩa xác định ý nghĩa của các tổ hợp kí tự trong chương trình.
- Lỗi cú pháp được chương trình dịch phát hiện và thông báo cho người lập chương trình biết, chỉ có các chương trình không còn lỗi cú pháp mới có thể được dịch sang ngôn ngữ máy.
- Lỗi ngữ nghĩa chỉ được phát hiện khi thực hiện chương trình trên dữ liệu cụ thể.

2. Một số khái niệm

a. Tên

- Mọi đối tượng trong chương trình đều phải được đặt tên theo quy tắc của ngôn ngữ lập trình và từng chương trình dịch cụ thể.
- Ý nghĩa của việc đặt tên và khai báo tên cho các đối tượng:
  • Để quản lý và phân biệt các đối tượng trong chương trình.
  • Để gợi nhớ nội dung của đối tượng.
- Qui tắc đặt tên trong Pascal:
  • Tên là một dãy liên tiếp không quá 127 kí tự bao gồm các chữ cái, chữ số và dấu gạch dưới nhưng phải bắt đầu bằng chữ cái hoặc dấu gạch dưới.
  • Trong chương trình dịch Free Pascal, tên có thể có độ dài tới 255 kí tự
  • Ngôn ngữ pascal không phân biệt chữ hoa, chữ thường trong tên. Một số ngôn ngữ lập trình khác (ví dụ C++) phân biệt chữ hoa, chữ thường
  • Tên không bắt đầu bằng chữ số, không chứa dấu cách, không chứa kí tự đặt biệt
  • Nhiều ngôn ngữ lập trình, trong đó có pascal, phân biệt ba loại tên:
    • Tên dành riêng
    • Tên chuẩn
    • Tên cho người lập trình đặt
* Tên dành riêng:
- Là tên được dùng với ý nghĩa riêng xác định => Người lập trình không thể dùng với ý nghĩa khác.
- Tên dành riêng còn được gọi là từ khoá.
- Ví dụ: Một số từ khóa:
  • Trong Pascal: Program, uses, var, type, const, begin, end, array, type,…
  • Trong C++: main, include, if, while, void.
* Tên chuẩn:
- Được dùng với ý nghĩa nhất định nào đó, dùng riêng thì phải khai báo.
- Ví dụ:
  • Trong Pascal: abs, sqr, sqrt, cos, sin,…
  • Trong C++: cin, cout, getchar, …
*Tên do người lập trình đặt:
- Được dùng với ý nghĩa riêng, xác định bằng cách khai báo trước khi sử dụng.
- Các tên do người dùng đặt trong chương trình không được trùng nhau và không được trùng với tên dành riêng.

b. Hằng và biến

* Hằng
- Hằng là đại lượng có giá trị không thay đổi trong quá trình thực hiện chương trình.
- Các ngôn ngữ lập trình thường có:
  • Hằng số: số nguyên và số thực. Ví dụ: 2, 1.0E-6,…
  • Hằng lôgic: Là giá trị đúng (True)hoặc sai (False).
  • Hằng xâu: Là chuỗi kí tự trong bộ mã ASCII, đặt trong cặp dấu nháy.
* Biến
- Là đại lượng được đặt tên, dùng để lưu trữ giá trị và giá trị có thể được thay đổi trong quá trình thực hiện chương trình.
- Các Ngôn ngữ lập trình có nhiều loại biến khác nhau
- Biến phải khai báo trước khi sử dụng

c. Chú thích

- Các chú thích không làm ảnh hưởng đến chương trình.
- Trong Pascal chú thích được đặt trong {} hoặc (*và*).
- Trong C++ chú thích đặt trong /* và */ hoặc //.

Bài 3: Cấu trúc chương trình

BÀI 3. CẤU TRÚC CHƯƠNG TRÌNH

1. Cấu trúc chung

- Một chương trình viết bằng ngôn ngữ lập trình bậc cao thông thường gồm có: 2 phần là phần khai báo và phần thân chương trình, trong đó phần thân bắt buộc phải có.
- Qui ước:
  • Phần diễn giải bằng ngôn ngữ tự nhiên đặt trong cặp ngoặc <>
  • Thành phần có thể có hoặc không đặt trong cặp ngoặc []
=>Với qui ước trên ta có thể mô tả cấu trúc chung của một chương trình như sau:
[<phần khai báo>]
<phần thân>
- Trong Pascal:
  • Phần khai báo:
               Program < tên chương trình>;
               Uses < tên các thư viện>;
               Const <tên hằng>=<giá trị của hằng>;
               Var < tên biến>: <kiểu dữ liệu>;
               Procedure …; <khai báo thủ tục>
               Function …; <khai báo hàm>…
  • Phần thân:
               Begin
                    {Dãy các câu lệnh};
               End.

2. Các thành phần của chương trình

a. Phần khai báo

* Khai báo tên chương trình
- Trong Pascal:
  • Cú pháp: program <tên chương trình>;
  • Ví dụ:
    • Program vidu;
    • Program tinhtong;
* Khai báo thư viện
- Khai báo thư viện trong Pascal:
  • Cú pháp: Uses <tên thư viện>;
  • Ví dụ:
    • Uses crt; {Thư viện crt chứa các hàm vào/ra chuẩn làm việc với màn hình và bàn phím}
    • Uses graph; {Thư viện graph chứa các hàm đồ hoạ}
- Trong C++:
               #include <stdio.h>;
               #include <conio.h>;
* Khai báo hằng:
- Trong Pascal:
  • Cú pháp: Const <tên hằng> = <giá trị>;
  • Ví dụ
    • Const MaxN = 1000;
    • Const PI = 3.1416;
* Khai báo biến:
- Trong Pascal:
  • Cú pháp: Var <danh sách biến>:<kiểu dữ liệu>;
  • Ví dụ: Giải phương trình bậc hai: ax2 + bx +c = 0 => Khai báo: Var a, b, c, x1, x2, delta: real;

b. Phần thân chương trình

- Phần thân chương trình bao gồm dãy lệnh trong phạm vi được xác định bởi cặp dấu hiệu mở đầu và kết thúc.
- Trong Pascal, được bắt đầu và kết thúc bởi Begin… End.
     Begin
          [<Dãy lệnh>];
     End.

Bài 4: Một số kiểu dữ liệu chuẩn

BÀI 4. MỘT SỐ KIỂU DỮ LIỆU CHUẨN
- Có 4 kiểu dữ liệu chuẩn trong pascal: kiểu nguyên, kiểu thực, kiểu kí tự và kiểu logic
a. Kiểu nguyên
Kiểu
Bộ nhớ lưu trữ 1 giá trị
Phạm vi giá trị
Byte (dương)
1 byte
Từ 0 đến 255
Integer (âm, dương)
2 byte
Từ -215 đến 215-1
Word (dương)
2 byte
Từ 0 đến 216-1
Longint (âm, dương)
4 byte
Từ -231 đến 231-1
b. Kiểu thực
- Có nhiều kiểu cho giá trị là số thực nhưng hay dùng một số kiểu sau:

Kiểu
 Bộ nhớ lưu trữ 1 giá trị
Phạm vi giá trị
  Single
 4 byte
Từ 1.5×10-45 đến 3.4×1038
  Real
   6 byte
Từ 2.9×10-39 đến 1.7×1038
  Double
  8 byte
 Từ 5.0×10-324 đến 1.7×10308
  Extended
 10 byte
Từ 3.4×10-4932 đến 1.1×104932
c. Kiểu kí tự
Kiểu
Bộ nhớ lưu trữ 1 giá trị
Phạm vi giá trị
Char
1 byte
256 kí tự trong bộ mã ASCII
* Lưu ý:
- Mỗi kí tự có 1 mã tương ứng trong phạm vi từ 0 đến 255
- Các kí tự có quan hệ so sánh, việc so sánh dựa trên mã của từng kí tự.
d. Kiểu Logic
Kiểu
Bộ nhớ lưu trữ 1 giá trị
Phạm vi giá trị
boolean
1 byte
True hoặc False

Bài 5: Khai báo biến

BÀI 5. KHAI BÁO BIẾN
- Trong NLT Pascal biến đơn được khai báo như sau: 
Var <danh sách biến>: <kiểu dữ liệu>;
- Trong đó:
  • Var: Là từ khoá dùng để khai báo biến
  • Danh sách biến: là 1 hoặc nhiều biến cách nhau bởi dấu phẩy.
  • Kiểu dữ liệu: Là một kiểu dữ liệu nào đó của ngôn ngữ Pascal. thường là kiểu dữ liệu chuẩn hoặc kiểu dữ liệu do người lập trình định nghĩa.
- Ví dụ: Var a, b, c, x1, x2, delta: Byte;
- Ta có thể khai báo nhiều biến và nhiều kiểu dữ liệu khác nhau theo cách dưới đây:
     Var
              <danh sách biến 1>:<kiểu dữ liệu 1>;
              <danh sách biến 2>:<kiểu dữ liệu 2>;
             …………………………………
- Ví dụ:
     Var       min, max: integer;
                  KT: boolean;
                   a,b: real;
* Lưu ý:
- Cần đặt tên biến sao cho gợi nhớ đến ý nghĩa của nó.
- Không nên đặt tên quá ngắn hay quá dài, dễ dẫn đến mắc lỗi hay hiểu nhầm.
- Khai báo biến cần quan tâm chú ý đến phạm vi giá trị của nó.

Bài 6: Phép toán, biểu thức, câu lệnh gán

BÀI 6. PHÉP TOÁN, BIỂU THỨC, CÂU LỆNH GÁN

1. Phép Toán

- Ngôn ngữ lập trình Pascal sử dụng một số phép toán sau:
  • Với số nguyên: +, -, *, Div, Mod
  • Với số thực: +, -, *, /
  • Các phép toán quan hệ: <, <=, >, >=, <> cho kết quả là một giá trị Logic (true hoặc false).
  • Các phép toán logic: NOT, OR, AND thường dùng để kết hợp nhiều biểu thức quan hệ với nhau.

2. Biểu thức và câu lệnh gán

a. Biểu thức số học

- Biểu thức số học là một dãy các phép toán +, -, *, /, div và mod từ các hằng, biến kiểu số và các hàm.
- Dùng cặp dấu () để quy định trình tự tính toán.
* Thứ tự thực hiện các phép toán:
- Trong ngoặc trước, ngoài ngoặc sau.
- Nhân chia trước, cộng trừ sau
- Giá trị của biểu thức có kiểu là kiểu của biến hoặc hằng có miền giá trị lớn nhất trong biểu thức.

b. Hàm số học chuẩn

- Các ngôn ngữ lập trình thường cung cấp sẵn một số hàm số học để tính một số giá trị thông dụng.
- Cách viết: Tên_hàm (đối số). VD: sqrt(4); sqr(2);
- Kết quả của hàm phụ thuộc vào kiểu của đối số.
- Đối số của hàm là một hay nhiều biểu thức số học đặt trong dấu ngoặc () sau tên hàm.
- Bản thân hàm cũng có thể coi là biểu thức số học và có thể tham gia vào biểu thức như một toán hạng bất kỳ.
* Bảng một số hàm chuẩn số học:
SQR(x)
 Trả về x2
SQRT(x)
 Trả về căn bậc hai của x (x\(\ge\)0)
ABS(x)
 Trả về |x|
SIN(x)
 Trả về sin(x) theo radian
COS(x)
 Trả về cos(x) theo radian
ARCTAN(x)
 Trả về arctang(x) theo radian
LN(x)
 Trả về ln(x)
EXP(x)
 Trả về ex
TRUNC(x)
 Trả về số nguyên gần với x nhất nhưng bé hơn x.
INT(x)
 Trả về phần nguyên của x
FRAC(x)
 Trả về phần thập phân của x
ROUND(x)
 Làm tròn số nguyên x
PRED(n)
 Trả về giá trị đứng trước n
SUCC(n)
 Trả về giá trị đứng sau n
ODD(n)
 Cho giá trị TRUE nếu n là số lẻ.
INC(n)
 Tăng n thêm 1 đơn vị (n:=n+1).
DEC(n)
 Giảm n đi 1 đơn vị (n:=n-1).

c. Biểu thức quan hệ

* Cấu trúc:
<Biểu thức 1> <phép toán quan hệ> <Biểu thức 2>
- Trong đó: Biểu thức 1 và biểu thức 2 phải cùng kiểu.
* Trình tự thực hiện:
- Tính giá trị biểu thức
- Thực hiện phép toán quan hệ
=> Kết quả của biểu thức logic là True hoặc False.
- Ví dụ: a>b hoặc 2*c<3*a

d. Biểu thức Logic

- Biểu thức Logic đơn giản nhất là hằng hoặc biến Logic.
- Ví dụ:
  • a, b, c là 3 cạnh của tam giác nếu thoã mãn điều kiện: (a+b>c) and (b+c>a) and (c+a>b)
=> Giá trị của biểu thức logic là: true hoặc false
  • not(x>1) thể hiện phát biểu “x không lớn hơn 1”. Biểu thức này tương đương biểu thức quan hệ x<=1
- Ngoài ra còn có các phép toán logic khác như: and, or, ... Ví dụ: biểu thức quan hệ ta viết lại dưới dạng phép toán logic như sau: (x>=4) and (x<=9)

e. Câu lệnh gán

- Lệnh gán là cấu trúc cơ bản nhất của mọi ngôn ngữ lập trình, thường dùng để gán giá trị cho biến.
- Cấu trúc: Tên biến:=biểu thức;
- Trong đó biểu thức phải phù hợp với tên biến, nghĩa là kiểu của tên biến phải cùng với kiểu của biểu thức hoặc phải bao hàm kiểu của biểu thức.
- Hoạt động của lệnh gán: Tính giá trị của biểu thức sau đó ghi giá trị đó vào tên biến.
- Ví dụ:
  • x1:=(- b + sqrt(delta))/(2*a);
  • x2:=(- b - sqrt(delta))/(2*a);
  • x1:=(-b-sqrt(b*b-4*a*c))/(2*a);
* Lưu ý:
- Biến kiểu thực có thể nhận giá trị kiểu nguyên và biến kiểu xâu có thể nhận kiểu kí tự, ngược lại thì không.

Bài 7: Các thủ tục chuẩn vào ra đơn giản

BÀI 7. CÁC THỦ TỤC CHUẨN VÀO/RA ĐƠN GIẢN

1. Nhập dữ liệu vào từ bàn phím

- Ta sử dụng thủ tục chuẩn read hoặc readln có cấu trúc như sau:
          read(<biến 1>,…,<biến n>);
          readln(<biến 1>,…,<biến n>);
- Ví dụ 1:
  • read(n);
  • readln(A,B,C);
- Ví dụ 2: Xét chương trình sau:
Program VD;
Uses crt;
Var a, b, c : Integer;
Begin        
     Clrscr;          
     Write(‘Moi ban nhap 3 so:’);          
     Readln(a, b, c);          
     Write(‘Ban vua nhap vao 3 so:, a, b, c);          
     Readln;
End.
* Chú ý:
- Khi nhập dữ liệu từ bàn phím READ và READLN có ý nghĩa như nhau, thường hay dùng READLN hơn. READLN luôn chờ gõ phím Enter.
- Khi nhập giá trị cho nhiều biến thì những giá trị này gõ cách nhau một dấu cách hoặc kí tự xuống dòng (phím Enter).

2. Đưa dữ liệu ra màn hình

- Để đưa dữ liệu ra màn hình tại vị trí con trỏ, ta dùng thủ tục write hoặc writeln với cấu trúc:
          Write(<giá trị 1>,…<giá trị n>);
          Writeln(<giá trị 1>,…<giá trị n>);
Trong đó: các giá trị có thể là biến đơn, biểu thức, tên hàm hoặc hằng.
- Ví dụ: xét chương trình sau
Program vd;
Uses crt;
Var tuoi:byte;
Begin Clrscr;
    Write(‘Moi ban nhap 3 so:’);
    readln(a,b,c);
    Write(‘Ban vua nhap 3 so:’,a,b,c);
    Write(‘Ban go ENTER de ket thuc’);
    Readln;
End.
* Lưu ý:
- Thủ tục Writeln sau khi đưa kết quả ra sẽ chuyển con trỏ màn hình xuống đầu dòng tiếp theo .
- Các thủ tục readln và writeln có thể không có tham số.
- Quy cách đưa thông tin ra:
  • Kết quả số thực:<độ rộng>:<số chữ số thập phân>
  • Kết quả khác:<độ rộng>
  • Độ rộng và số chữ số thập phân là các hằng nguyên dương.
Ví dụ:
Writeln(n:5, x:6:2);
Write(i:3, j:4, a+b:8:3);