chương 1 : giỚi thiỆu vỀ ngôn ngỮ lẬp trình · web viewbước 2 :...

42
Tin học đại cương MỤC LỤC NGÔN NGỮ LẬP TRÌNH PASCAL......................................3 1. GIỚI THIỆU.................................................. 3 1.1 XUẤT XỨ.................................................... 3 1.2 CÁC TẬP TIN CHÍNH CỦA NGÔN NGỮ PASCAL......................3 1.3 KHỞI ĐỘNG VÀ THOÁT KHỎI TURBO PASCAL.......................4 1.3.1 ...................................................Khởi động:4 1.3.2...................................................Thoát khỏi:4 1.4 CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ PASCAL.....................4 1.4.1..................................................... Bộ ký tự:4 1.4.2...................................................... Từ khoá:4 1.4.3.................................................... Tên chuẩn:5 1.4.4.............................................Tên (định danh) :5 1.4.5................................................Dấu chấm phẩy:5 1.4.6...............................................Lời giải thích:5 1.5 CẤU TRÚC TỔNG QUÁT CỦA MỘT CHƯƠNG TRÌNH PASCAL.............5 1.5.1.................................................Phần tiêu đề:6 1.5.2.................Phần khai báo dữ liệu và chương trình con:6 1.5.3........................................... Thân chương trình:6 1.6 CÁC BƯỚC CƠ BẢN KHI VIẾT MỘT CHƯƠNG TRÌNH..................7 1.7 CÁC KIỂU DỮ LIỆU CƠ BẢN...................................10 1.7.1................................................Kiểu số nguyên10 1.7.2 Kiểu số thực...........................................11 1.7.3 Kiểu ký tự.............................................12 1.8.4 Kiểu logic.............................................12 1.8 HẰNG,BIẾN, BIỂU THỨC, CÂU LỆNH............................14 1.8.1 Hằng:..................................................14 1.8.2 Biến:..................................................14 1.8.3 Biểu thức:.............................................15 1.8.4 Câu lệnh:..............................................15 1.8.5 Một số câu lệnh đơn cơ bản :...........................16 1.8.5.1 Lệnh gán :.............................................. 16 1.8.5.2 Câu lệnh nhập/xuất....................................... 17 Ví dụ : Viết chương trình nhập vào 2 số nguyên a,b. Tính tích, thương của hai số nguyên a,b đó..............................18 1.9 MỘT SỐ LỆNH DÙNG ĐỂ TRÌNH BÀY MÀN HÌNH....................18 1

Upload: phamthuan

Post on 27-Mar-2018

222 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

MỤC LỤC

NGÔN NGỮ LẬP TRÌNH PASCAL..............................................................................................31. GIỚI THIỆU................................................................................................................................31.1 XUẤT XỨ.................................................................................................................................31.2 CÁC TẬP TIN CHÍNH CỦA NGÔN NGỮ PASCAL.............................................................31.3 KHỞI ĐỘNG VÀ THOÁT KHỎI TURBO PASCAL..............................................................4

1.3.1 Khởi động:........................................................................................................................41.3.2 Thoát khỏi:........................................................................................................................4

1.4 CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ PASCAL........................................................41.4.1 Bộ ký tự:...........................................................................................................................41.4.2 Từ khoá:............................................................................................................................41.4.3 Tên chuẩn:........................................................................................................................51.4.4 Tên (định danh) :..............................................................................................................51.4.5 Dấu chấm phẩy:................................................................................................................51.4.6 Lời giải thích:....................................................................................................................5

1.5 CẤU TRÚC TỔNG QUÁT CỦA MỘT CHƯƠNG TRÌNH PASCAL....................................51.5.1 Phần tiêu đề:.....................................................................................................................61.5.2 Phần khai báo dữ liệu và chương trình con:.....................................................................61.5.3 Thân chương trình:...........................................................................................................6

1.6 CÁC BƯỚC CƠ BẢN KHI VIẾT MỘT CHƯƠNG TRÌNH...................................................71.7 CÁC KIỂU DỮ LIỆU CƠ BẢN.............................................................................................10

1.7.1 Kiểu số nguyên...............................................................................................................101.7.2 Kiểu số thực......................................................................................................................111.7.3 Kiểu ký tự.........................................................................................................................121.8.4 Kiểu logic..........................................................................................................................12

1.8 HẰNG,BIẾN, BIỂU THỨC, CÂU LỆNH..............................................................................141.8.1 Hằng:.................................................................................................................................141.8.2 Biến:..................................................................................................................................141.8.3 Biểu thức:..........................................................................................................................151.8.4 Câu lệnh:...........................................................................................................................151.8.5 Một số câu lệnh đơn cơ bản :............................................................................................16

1.8.5.1 Lệnh gán :..................................................................................................................161.8.5.2 Câu lệnh nhập/xuất....................................................................................................17

Ví dụ : Viết chương trình nhập vào 2 số nguyên a,b. Tính tích, thương của hai số nguyên a,b đó.18

1.9 MỘT SỐ LỆNH DÙNG ĐỂ TRÌNH BÀY MÀN HÌNH........................................................181.9.1 Toạ độ màn hình:..............................................................................................................181.9.2 Các lệnh sử dụng màu sắc :..............................................................................................181.9.3 Các lệnh khác :..................................................................................................................19Ví dụ : Nhập vào một góc x (tính bằng độ). Tính sin(x),cos(x) và xuất kết quả với màu đỏ....19

MỘT SỐ PHÍM CHỨC NĂNG KHI SOẠN THẢO..............................................................212 : CÁC CẤU TRÚC RẼ NHÁNH...............................................................................................24

1

Page 2: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

2.1 CẤU TRÚC IF … THEN …ELSE….....................................................................................24Ví dụ : Nhập vào 2 số nguyên a, b. Tìm số lớn nhất trong 2 số......................................26

2.2 CẤU TRÚC CASE ... OF........................................................................................................27Ví dụ 1: Nhập vào 1 số nguyên a, cho biết a là số chẵn hay lẻ......................................27

3 : CẤU TRÚC LẶP......................................................................................................................313.1 CẤU TRÚC LẶP CÓ SỐ BƯỚC LẶP XÁC ĐỊNH FOR :....................................................313.2 CẤU TRÚC LẶP CÓ SỐ BƯỚC LẶP KHÔNG XÁC ĐỊNH :.............................................33

3.2.1 CẤU TRÚC WHILE :......................................................................................................333.2.2 CẤU TRÚC REPEAT … UNTIL….................................................................................35

2

Page 3: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

NGÔN NGỮ LẬP TRÌNH PASCAL

1. GIỚI THIỆU

1.1 XUẤT XỨ

Ngôn ngữ lập trình Pascal do giáo sư Niklaus Wirth ở trường đại học kỹ thuật Zurich

(Thụy Sĩ) thiết kế và công bố vào đầu những năm 1970, với tên Pascal để tưởng nhớ đến

Blaise Pascal - nhà toán học, triết học nổi tiếng của Pháp ở thế kỷ 17, người đã chế tạo ra

máy tính cơ khí đầu tiên của nhân loại.

Ban đầu Pascal được thiết kế chỉ nhằm phục vụ cho việc giảng dạy cho các sinh

viên về phương pháp lập trình, nhưng ngôn ngữ này đã thành công rực rỡ trong mọi ứng

dụng lập trình và đã ảnh hưởng sâu sắc đến các ngôn ngữ ra đời sau nó trong tư duy lập

trình cấu trúc.

Ngôn ngữ lập trình Pascal chuẩn được nhiều hãng phát triển, đặc biệt là hãng

Bordland (Mỹ) với phần mềm Turbo Pascal. Phiên bản mới nhất là Turbo Pascal 7.0

1.2 CÁC TẬP TIN CHÍNH CỦA NGÔN NGỮ PASCAL

Một bộ Turbo Pascal 7.0 gồm nhiều tập tin, dưới đây chỉ liệt kê một số tập tin quan

trọng nhất cùng với chức năng của nó :

Turbo.Exe : Soạn thảo, dịch và liên kết chương trình theo menu.

Turbo.Tpl : Tập tin thư viện, nơi lưu các thủ tục, hàm được định nghĩa sẵn.

Graph.Tpu : Tập tin thư viện đồ hoạ.

Turbo.Hlp : Cung cấp các giúp đỡ khi lập trình.

*.Chr : Chứa các font chữ trong chế độ đồ hoạ.

*.Bgi : Chứa các font màn hình.

3

Page 4: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

1.3 KHỞI ĐỘNG VÀ THOÁT KHỎI TURBO PASCAL1.3.1 Khởi động:

- Hệ điều hành MSDOS : Chuyển vào thư mục chứa các tập tin chính ở trên, sau đó

gõ vào lệnh : Turbo (enter)

- Hệ điều hành Windows : nhấn đúp chuột vào biểu tượng Turbo Pascal 7.0 trên

desktop.

1.3.2 Thoát khỏi:

Nhấn ALT+ X hoặc nhấn F10 hay chọn menu File/EXIT.

1.4 CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ PASCAL1.4.1 Bộ ký tự:

Ngôn ngữ Pascal được xây dựng từ một bộ ký tự, các ký tự đó được kết hợp lại

thành các từ, các từ tạo thành các câu, tất cả đều tuân theo một cú pháp rất chặt chẽ.

Bộ ký tự 26 chữ cái la tinh (chữ hoa A,B, ..., Z, chữ thường a, b,…, z)

Ký tự gạch nối _

Bộ chữ số thập phân 0, 1, 2, …,9

Các ký hiệu toán học : +, -, *, /, =, <, >, (,) …

Các ký hiệu khác : [, ], !, #, $, @, & , ;, …

1.4.2 Từ khoá:

Là các từ riêng, đã được định nghĩa sẵn của Pascal, có ngữ nghĩa đã được xác

định, không được dùng nó vào các việc khác.

Từ khoá chung : PROGRAM, BEGIN, END, PROCEDURE, FUNCTION

Từ khoá để khai báo: CONST, LABEL, VAR, TYPE, ARRAY, STRING, …

Từ khoá của lệnh rẽ nhánh : IF, THEN, ELSE, CASE, OF

Từ khoá của lệnh lặp : FOR, TO, DOWNTO, WHILE, DO, REPEAT, UNTIL

Từ khoá điều khiển : EXIT, GOTO, BREAK

Từ khoá là toán tử : AND, OR, NOT, DIV, MOD, IN,. . .

4

Page 5: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

1.4.3 Tên chuẩn:

Là tên được định nghĩa sẵn trong Pascal, nhưng người dùng có thể định nghĩa lại

nếu muốn.

Pascal có các tên chuẩn như sau: boolean, integer, char, real, word, byte, text,

false, true, maxint, writeln, readln, abs, arctan, chr, sin, eof, eoln, exp, ln, ord, round, trunc,

sqr, sqrt, pred, succ, reset, …

1.4.4 Tên (định danh) :

Khi lập trình ta thường phải đặt tên để phân biệt các biến, hằng, kiểu, tên chương

trình con, …

Quy tắc đặt tên trong Pascal :

Có thể dùng ký tự chữ, số, dấu gạch nối, nhưng phải bắt đầu bằng một ký tự chữ.

Không phân biệt chữ hoa chữ thường.

Nên đặt tên ngắn gọn nhưng dễ hiểu và gợi nhớ.

Tên không được trùng nhau và trùng từ khóa.

- Ví dụ : các tên không hợp lệ : 1ABC, #DEL, ARRAY, DEL TA

1.4.5 Dấu chấm phẩy:Được dùng để ngăn cách các câu lệnh trong chương trình.

1.4.6 Lời giải thích:

Để chương trình dễ đọc, thường người lập trình phải thêm lời giải thích vào trong

chương trình. Lời giải thích được đặt giữa cặp dấu (* và *) hoặc giữa cặp dấu ngoặc móc

{ và }. Lời giải thích có thể đặt ở bất kỳ vị trí nào trong chương trình mà không ảnh hưởng

đến các phần khác.

1.5 CẤU TRÚC TỔNG QUÁT CỦA MỘT CHƯƠNG TRÌNH PASCAL

Một chương trình Pascal đầy đủ gồm 3 phần sau :

5

PROGRAM tên_chương_trình; (* Dòng tiêu đề *)

Page 6: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

1.5.1 Phần tiêu đề:

Luôn bắt đầu bằng từ khoá program, tiếp theo là tên_chương_trình (tự đặt) và kết

thúc bằng một dấu chấm phẩy (;).

Phần này không bắt buộc phải có.

1.5.2 Phần khai báo dữ liệu và chương trình con:

Dùng để khai báo tất cả các dữ liệu, cũng như các thủ tục và hàm được sử dụng

trong chương trình.Phần này không bắt buộc phải có.

1.5.3 Thân chương trình:

Được giới hạn bởi cặp từ khóa BEGIN và END (sau END phải có dấu chấm), chứa

tất cả các lệnh để xử lý các dữ liệu đã được mô tả trong phần khai báo.Phần này luôn bắt

buộc phải có.

Ví dụ : 1 chương trình đơn giản : in ra màn hình câu “Xin chao”

BEGIN

Write (‘Xin chao’);

END

6

(* Phần khai báo dữ liệu và chương trình con *)USES CRT; { Khai báo thư viện cần sử dụng } VAR … { Khai báo các biến }CONST … { Khai báo các hằng }LABEL … { Khai báo nhãn }TYPE … { Mô tả các kiểu dữ liệu mới }PROCEDURE … { Khai báo các thủ tục }FUNCTION … { Khai báo các hàm }

(* Thân chương trình *)BEGIN

{ Các câu lệnh cần thực hiện }END.

Page 7: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

1.6 CÁC BƯỚC CƠ BẢN KHI VIẾT MỘT CHƯƠNG TRÌNH - Bước 1 : Soạn thảo chương trình : dùng chương trình soạn thảo văn bản (editor) để

viết chương trình (chương trình nguồn – source program), và lưu dưới dạng file .pas.

- Bước 2 : Dịch và kết nối chương trình : bao gồm 2 quá trình :

o Gọi chương trình dịch (compiler) để dịch chương trình nguồn sang mã máy (tập tin .obj) . Nếu có những lỗi cú pháp – syntax error (ví dụ : ghi sai từ khóa BEGIN thành BEGAN, sau câu lệnh thiếu dấu chấm phẩy, thiếu dấu chấm sau end để kết thúc chương trình …) thì chương trình dịch sẽ báo lỗi, ta phải quay lên bước 1 để chỉnh sửa.

o Nếu chương trình không có lỗi cú pháp, sẽ được kết nối (linker) với các thư viện chứa các hàm được định nghĩa sẵn cần dùng.

- Bước 3 : Chạy chương trình và kiểm tra kết quả : nếu kết quả nhận được là sai thì đây là những lỗi logic, lỗi do thuật giải cần quay lại bước 1 để chỉnh sửa lại thuật giải của bài toán.

CÁC CÁCH DIỄN ĐẠT THUẬT GIẢI BÀI TOÁN :

Chúng ta hãy lấy ví dụ về việc xây dựng thuật giải tìm ước số chung lớn nhất của hai số a và b (Thuật giải Ơ clid).

Có 3 cách diễn đạt thuật giải như sau.

Cách 1: Liệt kê các bước bằng lời.Bước 1 : Đọc a, b.

Bước 2 : Chia a cho b, được số dư là r.

Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước 4.

Nếu r ≠ 0 thì gán giá trị b cho b a, gán giá trị r cho b và quay lại bước 1.

Bước 4 : In ra kết quả.

Bước 5 : Kết thúc.

Cách 2 : Diễn đạt bằng lưu đồ:Các hình cơ bản để xây dựng lưu đồ thuật giải là :

7

Nhập/xuất dữ liệu(Read/Write)

Begin

Bắt đầu thuật giải

End

Kết thúc thuật giải

Page 8: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

Ví dụ :

Cách 3 : Bằng ngôn ngữ lập trình.

8

A

Thực hiệncông việc A

A

Gọi chương trình con A

Một phép thử B: tùy thuộc vào trạng thái của B là đúng

hay sai mà rẽ nhánh thích hợp

BSai

Đúng

a:=b, b:=r

Begin

Đọc a và b

Chia a cho bSố dư r

R = 0 ?

yes

no

USCLN:=b

In ra USCLN

End

Page 9: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

Ngôn ngữ thuật giải là những ngôn ngữ lập trình hướng tời giải quyết vần đề bằng thuật giải, nghĩa là bằng trình tự các lệnh. Thí dụ Pascal là một trong các ngôn ngữ thuật giải, nghĩa là nó tự diễn tả thuật giải cần tiến hành. Đó cũng là một ưu điểm của Pascal giúp cho người lập trình cáo ngay tư duy xây dựng thuật giải mà không cần dùng lưu đồ.

Var

a, b, r : integer;

Begin

Read(a); Read(b); {Đọc a và b)

r := a mod b; {số dư r)

while r <> 0 Do

Begin

a := b;

b := r;

r := a mod b;

End;

USCLN := b;

Write(‘USCLN = ‘,r); {In ra kết quả}

End.

Thuật giải đổi chỗ :

Bài toán thực tế đặt ra là: có 2 cái cốc xanh và đỏ, cốc xanh đựng nước cam, cốc đỏ đựng nước chanh. Làm thế nào để cốc xanh đựng nước chanh còn cốc đỏ đựng nước cam.

Trong máy tính, vấn đề cũng được đặt ra như sau: có hai biến x và y, làm thế nào để hoán vị giá trị của hai biến đó. Biến x là một ô nhớ có địa chỉ nào đấy, có tên do ta đặt cho là x, dùng để chứa các giá trị ta gán vào. Phép gán được kí hiệu là := (trong PASCAL) hoặc = (trong C). Thí dụ: x:=5 nghĩa là ô nhớ x nhận giá trị là 5.

Thuật giải hay các bước phải làm để đổi chỗ giá từ 2 biến là: dùng một ô nhớ hay biến t trung gian để lưu trữ tạm thời :

t := x;

x := y;

y := t;

9

Page 10: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

1.7 CÁC KIỂU DỮ LIỆU CƠ BẢN

Dữ liệu là thông tin mà máy tính cần phải xử lý.

Một kiểu dữ liệu là một sự quy định về giá trị cũng như cách biểu diễn và các phép

toán sử dụng được.

Pascal chuẩn cho ta các kiểu đơn giản như sau :

1.7.1 Kiểu số nguyên

Các tập số nguyên được định nghĩa với các từ khoá và miền giá trị như sau:

Từ khoá Miền giá trị Kích thước

integer -32768 … 32767 2 byte

byte 0 … 255 1 byte

word 0 … 65535 2 byte

shortint -128 … 127 1 byte

longint -2147483648 … 2147483647 4 byte

Các phép toán số học đối với số nguyên

Toán tử ý nghĩa

div chia lấy phần nguyên

mod chia lấy phần dư

+ cộng

- trừ

* nhân

/ chia lấy kết quả đầy đủ (kết quả là 1 số thực)

Lưu ý :

Cần chú ý về miền giới hạn của kiểu dữ liệu.

Trong một biểu thức, các phép toán có mức ưu tiên cao hơn (*, /, div và mod) sẽ

được thực hiện trước; các phép toán có mức ưu tiên thấp hơn (+, -) được thực hiện

10

Page 11: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

sau. Các phép toán có cùng mức ưu tiên được thực hiện theo thứ tự từ trái qua

phải.

Khi một biểu thức có chứa các biểu thức con nằm trong ngoặc, thì các biểu thức

con này được thực hiện trước. Nếu có nhiều ngoặc lồng nhau thì các biểu thức con

trong cùng được thực hiện trước.

1.7.2 Kiểu số thực

Kiểu số thực (thuộc tập R trong toán học) được khai báo bằng từ khoá REAL, miền

giá trị của kiểu số thực là -1.7*10-38 đến 1.7*1038.

Các phép toán số học : +, - , *, /

Biểu diễn số thực :

- Dạng thập phân thông thường : dùng dấu chấm để ngăn cách phần nguyên và phần

thập phân.

Ví dụ : 2.95 , 6.0, -31.596314, - 0.00086 …

- Dạng có phần mũ : gồm 2 phần là phần định trị và phần mũ (số mũ của cơ số 10).

Ví dụ : 2.950000E +00, 6.000000E+ 00, -3.1596314E+01, -8.600000E-04

Còn gọi là kiểu dấu chấm phẩy động :

2.950000E + 00 = 0.295000E+01 = 0.029500E + 02 …

Các hàm số học chuẩn (dùng cho dữ liệu kiểu số nguyên và số thực) :

Hàm Ý nghĩa Kiểu tham số Kiểu hàm

abs(x) Tính trị tuyệt đối của x Số nguyên, thực Cùng kiểu tham

số

arctan(x) Hàm ngược của tan(x), tính bằng

radian

Số nguyên, thực Số thực

cos(x) Cos(x) tính bằng radian Số nguyên, thực Số thực

exp(x) ex Số nguyên, thực Số thực

11

Page 12: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

ln(x) Log cơ số e của x Số nguyên, thực Số thực

round(x) Làm tròn x Số thực Số nguyên

sin(x) Sin(x) tính bằng radian Số nguyên, thực Số thực

sqr(x) x2 Số nguyên, thực Cùng kiểu tham số

sqrt(x) Căn bậc hai của x Số nguyên, thực Số thực

trunc(x) Lấy phần nguyên của x (bỏ phần lẻ) Số thực Số nguyên

odd(x) Cho giá trị true nếu x là số lẻ Số nguyên Boolean

1.7.3 Kiểu ký tự

Được khai báo bằng từ khoá CHAR.

Kiểu ký tự gồm các ký tự của bảng mã ASCII (256 ký tự).

Một ký tự được biểu diễn trong cặp dấu nháy đơn ’ ’.Các hàm liên quan :

ord(‘x’) : Trả về số thứ tự tương ứng với ký tự x trong bảng mã ASCII.chr(x) : Trả về ký tự tương ứng với thứ tự x trong bảng mã ASCII.

Ví dụ :Ord(‘A’)=65

Ord(‘0’) = 48

Chr(65)=’A’

Chr(48) = ‘0’

1.8.4 Kiểu logic

Kiểu Logic là kiểu chỉ nhận 1 trong 2

giá trị là đúng(True) hoặc sai (False), được

khai báo bằng từ khoá Boolean.

Các phép toán so sánh cho kết quả là

một kiểu boolean :

Toán Định nghĩa

< Nhỏ hơn (hoặc đứng trước)

> Lớn hơn (hoặc đứng sau)

= Bằng

<= Nhỏ hơn hoặc bằng

>= Lớn hơn hoặc bằng

< > Khác nhau

12

Page 13: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

Các phép toán trên kiểu boolean :

Phép phủ định Not

Phép hội and

Phép tuyển or

Nếu p và q là các biểu thức logic thì các phép toán trên p và q cho ta kết quả

như sau :

P not p p q p or q p q p and q q

true false true true true true true true

false true true false true true false false

false true true false true false

false false false false false false

Ta cũng có thể xây dựng các biểu thức logic phức tạp hơn bằng cách kết hợp

các toán logic trên.

Ví dụ :

3>5 : false

13

Page 14: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

5<=9 : true

‘a’ > ‘z’ : false

‘9’ <= ‘B’ : true

false < true : true

‘c’ <> ‘C’ : true

1.8 HẰNG,BIẾN, BIỂU THỨC, CÂU LỆNH 1.8.1 Hằng:

- Định nghĩa :

- Hằng là đại lượng có giá trị không thay đổi. Một hằng có thể là số, kí tự, xâu ký tự

hay là kiểu logic.

- Cách khai báo:

CONST

Tên hằng = giá trị của hằng;

- Ví dụ :

Const

PI=3.14;

N=100;

GIOI = ‘A’;

DUNG = FALSE;

1.8.2 Biến:

- Định nghĩa : Biến là đại lượng có giá trị có thể thay đổi trong khi chương trình được

thực hiện.

- Cách khai báo :

VAR

Tên_biến_1 : kiểu_dữ_liệu_1;

Tên_biến_2 : kiểu_dữ_liệu_2;

14

Page 15: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

- Ví dụ :

Var a, b: integer;

C:real;

1.8.3 Biểu thức:

- Định nghĩa : Biểu thức là một công thức tính toán bao gồm các phép toán và toán

hạng (hằng, biến, hàm) và các dấu ngoặc. Các toán hạng phải tương thích với nhau

về kiểu.

- Có 2 loại biểu thức :

Biểu thức số học : có giá trị là 1 số (số nguyên hay thực).

Biểu thức logic : có giá trị là là 1 kiểu BOOLEAN (TRUE hay FALSE).

- Thứ tự ưu tiên : Khi tính giá trị của một biểu thức, ngôn ngữ pascal quy ước thứ tự

ưu tiên của các phép toán từ cao đến thấp như sau:

phép gọi hàm

Not

*,/, div, mod, and

+, -, or, xor

<, >, =, <=, >=, < >

1.8.4 Câu lệnh:

- Là những công việc mà chương trình cần phải thực hiện để xử lý các dữ liệu đã

được khai báo. Các câu lệnh cách nhau bằng dấu chấm phẩy (;).

- Có 2 loại câu lệnh :

Lệnh đơn giản : là những lệnh đơn, không chứa các lệnh khác.

Ví dụ : write, writeln, read, readln, goto…

Lệnh có cấu trúc (lệnh hợp thành hay lệnh ghép) : bao gồm nhiều lệnh khác

(lệnh đơn hay lệnh ghép khác) bên trong.

Ví dụ : if … then …else …,

15

Page 16: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

case…of…,

for …to…do …,

repeat…until…,

while…do…

1.8.5 Một số câu lệnh đơn cơ bản :1.8.5.1 Lệnh gán :

- Là lệnh dùng để gán giá trị cho các biến, ký hiệu :=

- Cú pháp :

tên biến := biểu thức;

Trong đó :

Vế trái của phép gán chỉ có thể là 1 biến duy nhất.

Biểu thức có thể là một hằng, một biến khác đã được gán giá trị trước đó,

hay là một biểu thức.

Chú ý: tính tương thích về kiểu dữ liệu của 2 vế : vế trái và vế phải phải cùng

kiểu dữ liệu. Có trường hợp ngoại lệ là 1 biến thực (vế trái) có thể nhận 1 giá trị

nguyên(vế phải), khi đó giá trị nguyên sẽ được chuyển đổi thành giá trị thực

tương ứng. Nhưng ta không thể làm ngược lại, tức là gán một giá trị thực cho

biến nguyên.

Ví dụ : Var a,b : integer;

c : real;Begin

A =5; {đúng}C=A; {đúng}B=C+3; {sai}

End.

1.8.5.2 Câu lệnh nhập/xuấtCác lệnh xuất dữ liệu ra màn hình

Write (‘x’); Xuất ra màn hình ký tự x

Write (x); Xuất ra màn hình giá trị của biến x

16

Page 17: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

Write (x:m); Dành m vị trí để xuất giá trị của biến x (x là biến số nguyên hay ký

tự)

Write(x:m:n); Dành m vị trí để xuất giá trị của biến x (x là biến thực), trong đó lấy

n chữ số thập phân.

Writeln; Đưa con trỏ xuống đầu dòng dưới.

Chú ý: Lệnh writeln tương tự như write nhưng sẽ đưa con trỏ xuống đầu

dòng dưới sau khi đã xuất xong dữ liệu.

Ví dụ : Viết chương trình xuất lên màn hình 2 câu sau

Hello Turbo Pascal

Hello Visual Basic

begin

writeln('Hello Turbo Pascal');

writeln('Hello Visual Basic');

readln; {dừng chương trình để xem kết quả, xem xong nhấn enter}

end.

Thay lệnh writeln bằng lệnh write để thấy sự khác nhau.

Các lệnh nhập giá trị cho các biến từ bàn phím :

Read(x); hay Readln(x); : nhập 1 giá trị từ bàn phím đưa vào cho biến x, nhấn enter

để kết thúc việc nhập.

Readln; : Dừng màn hình, nhấn phím enter sẽ tiếp tục.

Ví dụ : Viết chương trình nhập vào 2 số nguyên a,b. Tính tích, thương của hai số nguyên a,b đó.

Program Tinh_tich_thuong_cua_2_so_nguyen;

Var a,b:integer;

tich:integer;

17

Page 18: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

Thuong:real;

Begin

Writeln(‘nhap vao so nguyen a=’); readln(a);

Writeln(‘nhap vao so nguyen b=’); readln(b);

Tich:=a*b;

Thuong:=a/b;

Writeln(‘ Tich la ‘, tich:10);

Writeln(‘ Thuong la ‘, thuong:10:2);

Readln;

End.

1.9 MỘT SỐ LỆNH DÙNG ĐỂ TRÌNH BÀY MÀN HÌNHĐể sử dụng được các lệnh trình bày màn hình, cần phải khai báo thư viện CRT .

1.9.1 Toạ độ màn hình:

- Toạ độ màn hình được biểu diễn bởi 2 giá trị : x chỉ vị trí cột (từ 1 đến 80) và y chỉ vị

trí dòng (từ 1 đến 25).

- Ta có thể chuyển con trỏ tới vị trí mới trên màn hình bằng lệnh : gototxy ( x, y )

whereX : cho kết quả là một số nguyên là vị trí cột;

whereY : cho kết quả là một số nguyên là vị trí hàng.

1.9.2 Các lệnh sử dụng màu sắc :

0: Black 1: Blue 2: Green 3: Cyan

4: Red 5: Magenta 6: Brown 7: LightGray

8: DarkGray 9: LightBlue 10: LightGreen 11: LightCyan

12: LightRed 13: LightMagenta 14: Yellow 15: White

- Lệnh chọn màu chữ: Textcolor(color)

Ví dụ : Textcolor(red) hay Textcolor(4)

18

Page 19: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

- Lệnh chọn màu nền: Textbackground(color)

Ví dụ : Textbackground(Blue) hay Textbackgound(1)

- Để làm kí tự nhấp nháy, ta cộng vào sau màu nét hằng chuẩn blink.

Ví dụ : textcolor(red + blink) hay Textcolor(4+blink)

1.9.3 Các lệnh khác :

- clrscr : lệnh xoá sạch màn hình, đưa con trỏ về góc trên bên trái màn hình.

- readkey : đọc một ký tự từ bàn phím(không cần nhấn enter để kết thúc).

Ví dụ : ch:=Readkey : nhập một ký tự từ bàn phím và lưu vào biến ch.

- keypressed : trả về true nếu có một phím được nhấn.

- random(n) : cho một số nguyên ngẫu nhiên, có giá trị nằm trong khoảng từ 0 đến n-

1.

Ví dụ : Nhập vào một góc x (tính bằng độ). Tính sin(x),cos(x) và xuất kết quả với màu đỏ.

Uses crt;

Var x, radian : real;

Begin

Clrscr;

Readln(x);

Radian:=x*pi/180;

Textcolor(4);

Writeln('sin(x) =',sin(radian):10:2);

Writeln('cos(x) =',cos(radian):10:2);

Readln;

End.

19

Page 20: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

MỘT SỐ PHÍM CHỨC NĂNG KHI SOẠN THẢO

File new mở file mới

File open ( F3) mở file đã có

File save (F2) lưu file đang soạn thảo

File save as lưu file với tên khác

File exit (alt-X) thoát khỏi pascal

Alt + F3 đóng cửa sổ hiện hành

RunRun (CTRL+F9)chạy chương tình

Page up chuyển lên trang màn hình trước

Page down chuyển xuống trang màn hình sau

CTRL+ Page up chuyển đến đầu chương trình

CTRL+ Page down chuyển đến cuối chương trình

Home về đầu dòng hiện hành

End về cuối dòng hiện hành

Insert thay đổi chế độ viết chèn/viết đè

Delete xoá một ký tự tại vị trí hiện hành của con trỏ

Backspace xóa một ký tự trước vị trí hiện hành của con trỏ

CTRL+Y xoá dòng hiện hành

CTRL+Q+Y xoá từ vị trí con trỏ đến cuối dòng

CTRL+K+B đánh dấu đầu khối

CTRL+K+k đánh dấu cuối khối

CTRL+K+C sao chép khối đến vị trí hiện hành của con trỏ

CTRL+K+V di chuyển khối đến vị trí hiện hành của con trỏ

CTRL+K+H Bỏ đánh dấu khối

Chú ý:

20

Page 21: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

- Có thể đánh dấu khối bằng cách dùng shift + phím mũi tên.

- Phím CTRL + insert để đưa khối vào bộ nhớ và Shift + insert để dán khối tại vị trí

hiện hành của con trỏ.

21

Page 22: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

BÀI TẬP

1.1. Tạo 3 số nguyên ngẫu nhiên trong khoảng từ 1 đến 100, tính tổng 3 số đó.

1.2. Nhập số tiền a tính bằng USD và tỉ giá T. Hãy đổi a ra VND theo tỷ giá T.

1.3. Nhập toạ độ 3 điểm A,B,C lần lượt là (xa,ya), (xb,yb), (xc,yc). Hãy tính diện tích, chu vi

tam giác ABC.

Ví dụ : nếu toạ độ 3 điểm là (0,0), (3,0); (0,4) thì diện tích tam giác là 6 và chu vi là 12.

1.4. Viết chương trình nhập vào canh của hình vuông. Hãy tính dien tich, chu vi, đường

chéo của hình vuông đó.

1.5. Nhập một số tự nhiên n có 3 chữ số, đảo ngược một số đó.

Ví dụ : nếu số nhập vào là 327 thì kết quả xuất ra là 723

1.6. Biết tổng số giây là s , hãy chuyển đổi s sang giờ, phút, giây.

Ví dụ : s = 3700 thì đổi thành dạng 1giờ 1phút 40giây.

1.7. Viết chương trình nhập vào các cột điểm hệ số 1, điểm hệ số 2 và điểm thi hết môn.

Hãy cho biết điểm trung bình kiểm tra và điểm trung bình môn, biết :

điểm trung bình kiểm tra = (hệsố1 + 2* hệ số2)/3

điểm trung bình môn = (điểm trung bình kiểm tra+điểm thi)/2

22

Page 23: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

2 : CÁC CẤU TRÚC RẼ NHÁNH

2.1 CẤU TRÚC IF … THEN …ELSE…

Cú pháp 1: IF <điều_kiện> THEN

<công_việc>;

Trong đó

<điều_kiện> là một biểu thức logic (trả về trị true hoặc false).

Nếu <điều_kiện> là true, <công_việc> sẽ được thực hiện, ngược lại

<công_việc> không thực hiện.

- Lưu đồ thực hiện :

Ví dụ : Giải phương trình bậc 2 : ax2 + bx + c = 0. (a<>0)

var a, b, c,delta, x1, x2:real;

begin

readln(a,b,c);

delta:=b*b-4*a*c;

if delta<0 then

writeln('phuong trinh vo nghiem');

if delta=0 then

23

Begin

điều_kiện

công_việc

TRUE

End

FALSE

Page 24: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

writeln('phuong trinh co nghiem kep x1= x2= ',-b/(2*a):6:2);

if delta>0 then

begin

x1:=(-b+sqrt(delta))/(2*a);

x2:=(-b-sqrt(delta))/(2*a);

writeln('x1=',x1:6:2);

writeln('x2=',x2:6:2);

end;

readln;

end.

Chú ý : Phần công việc cần thực hiện sau then và sau else trong cấu trúc if chỉ bao

gồm 1 lệnh. Nếu công việc cần thực hiện bao gồm từ 2 lệnh trở lên, thì phải dùng

cặp từ khóa begin và end để nhóm các lệnh đó lại thành 1 lệnh phức.

Cú pháp 2 : IF <điều_kiện> THEN

<công_việc_1>

ELSE

<công_việc_2>;

Nếu <điều_kiện> nhận giá trị true thì <công_việc_1> được thực hiện ngược lại thì

<công_việc_2> sẽ được thực hiện

- Lưu đồ thực hiện :

24

Begin

điều_kiện

công_việc_1

TRUE

End

FALSE

công_việc_2

Page 25: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

Chú ý: trước else không dùng dấu chấm phẩy.

Ví dụ : Nhập vào 2 số nguyên a, b. Tìm số lớn nhất trong 2 số.

Var a, b, max : integer;

Begin

readln(a,b,c);

if a>b then max:=a

else max:=b;

writeln('so lon nhat la ',max);

End.

Có thể kết hợp nhiều cấu trúc if…then… và if…then…else…lại với nhau.Ví dụ : Nhập vào 1 tháng (từ 1 đến 12), cho biết số ngày của tháng.

Var thang, so_ngay : byte;

Begin

Write(‘Nhap vao 1 thang’);

Read(thang);

If ( thang 2) then so_ngay:= 28;

Else

If (thang =1) or( thang=3) or (thang=5) or (thang=7) or (thang=8)

or (thang=10) or (thang=12) then

so_ngay:= 31

Else so_ngay:=30;

Write(‘So ngay cua thang ’, thang, ‘la:’, so_ngay);

End.

25

Page 26: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

2.2 CẤU TRÚC CASE ... OF

Tuy if...then…else… đủ để thực hiện hầu như bất kỳ cấu trúc có nhiều lựa chọn

nào, nhưng trong một số trường hợp, cấu trúc case...of… tiện lợi và làm chương trình

trở nên rõ ràng, dễ đọc hơn. Ta sẽ xem xét cấu trúc này dưới đây.

Cú pháp:

CASE <biểu_thức> OF

Danh_ sách_hằng_1 : <công_việc_1>;

Danh_ sách_ hằng_2 : <công_việc_2>;

....

Danh_ sách_ hằng_n : <công_việc_n>;

ELSE

<công_việc_0>;

END;

Trong đó

<biểu_thức> có thể nhận giá trị kiểu nguyên, kiểu logic, hay kiểu kí tự, nhưng

không thể là kiểu số thực.

Danh_ sách_ hằng_i là một hay nhiều giá trị có thể của biểu thức.

Đầu tiên, <biểu_thức> được tính toán, nếu giá trị của nó nằm trong Danh_

sách_ hằng_i thì <công_việc_i> tương ứng với nó sẽ được thực hiện. Nếu

giá trị của biểu thức không thuộc danh sách hằng từ 1 đến n đã được liệt kê

thì <công_việc_0> sau từ khoá else (nếu có) sẽ được thực hiện.

Ví dụ 1: Nhập vào 1 số nguyên a, cho biết a là số chẵn hay lẻ.

Var a:integer;

Begin

Write(‘Nhap vao so nguyen a:’);

Readln(a);

26

Page 27: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

If a<0 then write('khong hop le')

Else

case (a mod 2) of

0 : write(a,' la so chan');

1 : write(a,' la so le');

end;

End.

Ví dụ 2: Nhập vào 1 tháng (từ 1 đến 12), cho biết số ngày của tháng.

var thang,so_ngay:byte;

begin

readln(a);

case thang of

1, 3, 5, 7, 8, 10,12:so_ngay:=31;

4, 6, 9, 11:so_ngay:=30;

2:so_ngay:=28;

end;

writeln('so ngay la : ' ,so_ngay);

readln;

end.

27

Page 28: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

BÀI TẬP

2.1 Viết chương trình nhập điểm (số thực) và phân loại học sinh theo tiêu chuẩn sau:

9 Điểm TB loại A

7 Điểm TB < 9 B

5 Điểm TB < 7 C

Điểm TB < 5 D

2.2 Nhập vào chỉ số điện mới, và chỉ số điện cũ, tính tiền điện hàng tháng với cách thức

tính tiền điện như sau:

100KW đầu tiên giá 500 đồng/KW

50KW tiếp theo giá 650 đồng/KW

100KW thứ 151 trở lên giá 900 đồng/KW

Tiền phụ thu tiền điện mỗi tháng là 10%.

2.3 Nhập vào một số dương thuộc kiểu integer. Hỏi số đó có bao nhiêu chữ số ?

2.4 Tìm giá trị lớn nhất của 3 số thực a, b, c nhập từ bàn phím.

2.5 Nhập vào 4 số nguyên a,b,c,d. Tìm giá trị lớn nhì của 4 số trên.

2.6 Nhập vào thứ của các ngày trong tuần (2,3,4,5,6,7,8) và xuất ra màn hình tên tiếng Anh

của ngày đó (chẳng hạn nếu số thứ tự nhập vào là 2 thì kết quả là: Monday,…)

2.7 Nhập từ bàn phím hai số nguyên a,b. Nhập vào một ký tự phép toán (+, -, *, /). Hãy

thực hiện phép toán toán đó với 2 số a, b đã nhập.

2.8 Nhập vào một ký tự, hãy cho biết ký tự đó là ký tự phép toán (+, -, *, / ) hay là ký tự

chữ (từ a đến z) hay là ký tự số (từ 0 đến 9) hay không thuộc 3 loại kể trên ?

2.9 Viết chương trình trò chơi đoán số như sau:

1. Máy tạo ra một số ngẫu nhiên từ 1 đến 100 (gọi là SOMAY)

2. Người chơi nhập vào một số (gọi là SONHAP)

Nếu số nhập lớn hơn số máy thì thông báo

28

Page 29: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

“so ban nhap lon hon so may”

Nếu số nhập nhỏ hơn số máy thì thông báo

“so ban nhap nho hon so may”

3.Trò chơi sẽ kết thúc nếu bạn đã đoán đúng số máy (SONHAP =SOMAY) hoặc bạn

đã đoán sai ba lần. Trường hợp bạn đoán không đúng thì in ra câu: “Bạn đã thua rồi” và

hiển thị số mà máy đã tạo(SOMAY), ngược lại thì in ra câu “Chúc mừng, bạn đã thắng”.

29

Page 30: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

3 : CẤU TRÚC LẶP

3.1 CẤU TRÚC LẶP CÓ SỐ BƯỚC LẶP XÁC ĐỊNH FOR :

Cấu trúc lặp for được dùng khi ta biết trước số lần cần lặp lại cần 1 biến để đếm

số lần đã thực hiện.

Cú pháp 1:

FOR <biến_ đếm>:= <cận_đầu > TO <cận_cuối> DO

<công_việc>;

Hoạt động : Đầu tiên <biến_đếm> nhận giá trị là <cận_đầu>. Nếu <biến_đếm> <=

<cận_cuối> thì <công_việc> được thực hiện, sau đó <biến_đếm> tự động tăng lên

một giá trị và vòng lặp cứ thế tiếp tục đến khi nào <biến_đếm> lớn hơn <cận_cuối>

thì vòng lặp kết thúc.

Chú ý: <biến_đếm>, <cận_đầu>, <cận_cuối> là dữ liệu thuộc kiểu đếm được.

Ví dụ 1: Xuất 5 lần dòng chữ sau lên màn hình: Hello Turbo Pascal

uses crt;

var I:byte;

Begin

30

Begin

biến_đếm:=cận_đầu

biến_đếm > cận_cuối

công_việc

biến_đếm:=biến_đếm+1

TRUE End

FALSE

Page 31: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

For I:=1 to 5 do

Writeln(‘Hello Turbo Pascal’);

End.

Ví dụ 2: Xuất ra màn hình các số từ 1 đến 100, mỗi dòng 10 số.

uses crt;

var I:byte;

Begin

For I:=1 to 100 do

Begin

Write(i:3);

If (I mod 10=0) then Writeln;

End;

End.

Có thể kết hợp các cấu trúc lặp for với nhau hay với các cấu trúc rẽ nhánh đã học :

if…then…else…, case…of…

Cú pháp 2:

FOR <biến_ đếm>:= <cận_đầu > DOWNTO <cận_cuối> DO

<công_việc>;

Hoạt động : Đầu tiên <biến_đếm> nhận giá trị là <cận_đầu>. Nếu <biến_đếm> >=

<cận_cuối> thì <công_việc> được thực hiện, sau đó <biến_đếm> tự động giảm đi

một giá trị và vòng lặp cứ thế tiếp tục đến khi nào <biến_đếm> nhỏ hơn <cận_cuối>

thì vòng lặp kết thúc.

Ví dụ 1: Tính tổng S= 1 + 2 +. . . + n. với n là số nguyên dương nhập từ bàn phím

31

Page 32: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

uses crt;

var i,n,s:integer;

begin

clrscr;

readln(n);

s:=0;

for i:=n downto 1 do

s:=s+i;

writeln('tong la ',s);

readln;

end.

Ví dụ 2 : In ra màn hình các ký tự chữ cái theo thứ tự đảo ngược :

uses crt;

var I:char;

Begin

For I:=’z’ downto ‘a’ do

Write(I : 3);

End.

3.2 CẤU TRÚC LẶP CÓ SỐ BƯỚC LẶP KHÔNG XÁC ĐỊNH :

Được sử dụng khi số lần cần thực hiện là không biết trước.

3.2.1 CẤU TRÚC WHILE :

Cú pháp :

WHILE <điều_kiện> DO

32

Page 33: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

<công_việc>;

Hoạt động : Đầu tiên <điều_kiện> được kiểm tra. Nếu <điều_kiện> đúng

(TRUE) thì <công_việc> được thực hiện, sau đó quay lại kiểm tra <điều_kiện>,

vòng lặp cứ như thế cho đến khi nào <điều_kiện> sai (FALSE) thì vòng lặp kết

thúc.

Chú ý:

Trong <công_việc> phải có lệnh để làm cho <điều_kiện> thay đổi giá trị, nếu

không vòng lặp không kết thúc.

Vòng lặp while kiểm tra <điều_kiện> trước nên <công_việc> có thể không

được thực hiện lần nào.

Ví dụ : Lặp lại việc nhập vào hai số nguyên a,b từ bàn phím cho đến khi nào gặp hai

số mà tích của chúng là số chẵn thì dừng lại. Xuất kết quả a, b, a*b lên màn hình.

Uses crt;

Var a, b : integer;

Begin

Clrscr;

Write(‘Nhap vao 2 so a,b :’);

Readln(a,b);

33

Begin

điều_kiện

công_việc

TRUE End

FALSE

Page 34: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

While (a*b mod 2 =1) do

Begin

Write(‘Nhap lai 2 so a,b :’);

Readln(a,b);

End;

Write(‘Ket qua la : a =’, a, ‘b=’,b, ‘tich=’, a*b);

Readln;

End.

3.2.2 CẤU TRÚC REPEAT … UNTIL…

Cú pháp :

REPEAT

<công_việc>;

UNTIL <điều_kiện>;

Hoạt động : Đầu tiên, <công_việc> được thực hiện và sau đó <điều_kiện> được

kiểm tra. Nếu <điều_kiện> có giá trị sai (FALSE) thì vòng lặp được tiếp tục thực

hiện, và cứ như thế cho đến khi nào <điều_kiện> có giá trị đúng (TRUE) thì vòng

lặp kết thúc.

Ví dụ : Lặp lại việc nhập vào hai số nguyên a,b từ bàn phím cho đến khi nào gặp hai

số mà tích của chúng là số chẵn thì dừng lại. Xuất kết quả a, b, a*b lên màn hình.

Var a,b:integer;

34

Begin

điều_kiện

công_việc

TRUE

End

FALSE

Page 35: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

Begin

Repeat

Write(‘Nhap vao 2 so a,b :’);

Readln(a,b);

Until (a*b mod 2 =0);

Write(‘Ket qua la : a =’, a, ‘b=’,b, ‘tich=’, a*b);

Readln;

End.

Chú ý:

Trong <công_việc> phải có lệnh để làm cho <điều_kiện> thay đổi giá trị, nếu

không vòng lặp không kết thúc.

Vòng lặp Repeat…until…thực hiện <công_việc> trước, nên <công_việc> luôn

được thực hiện ít nhất 1 lần.

Ví dụ : Tính tổng các số từ 1 đến N, với N là số nguyên được nhập từ bàn phím

Trường hợp 1 : dùng cấu trúc FOR

Var i,n, tong : integer;

Begin

Write(‘Nhap vao so nguyen N’);

Readln(n);

tong:=0;

For i:=1 to n do

tong :=tong+i;

Write(‘Tong la : ’, tong:5);

35

Page 36: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

Readln;

End.

Trường hợp 2 : dùng cấu trúc WHILE

Var i,n, tong : integer;

Begin

Write(‘Nhap vao so nguyen N’);

Readln(n);

tong:=0;

while(i<=n)

begin

tong :=tong+i;

i:=i+1;

end;

Write(‘Tong la : ’, tong:5);

Readln;

End.

Trường hợp 3 : dùng cấu trúc REPEAT…UNTIL…

Var i,n, tong : integer;

Begin

Write(‘Nhap vao so nguyen N’);

Readln(n);

tong:=0;

Repeat

tong :=tong+i;

i:=i+1;

36

Page 37: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

Until (i>n);

Write(‘Tong la : ’, tong:5);

Readln;

End.

37

Page 38: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

BÀI TẬP

3.1.Viết chương trình nhập vào hai số nguyên M và N. Hãy in ra màn hình hình chữ nhật

rỗng M dòng và N cột, với các cạnh biểu diễn bằng dấu *

Ví dụ : M=4, N=8 ta được hình vẽ sau:

x x x x x x x x

x x

x x

x x x x x x x x

3.2 Viết chương trình nhập vào một số nguyên N. Hãy in ra màn hình hình vuông rỗng có

hai đường chéo với các cạnh biểu diễn bằng dấu *

Ví dụ với N=7

x x x x x x x

x x x x

x x x x

x x x

x x x x

x x x x

x x x x x x x

3.3.Viết chương trình nhập vào một số nguyên N (N <=24), sau đó xuất ra màn hình các

tam giác rỗng có các cạnh biểu diễn bằng dấu *

38

Page 39: Chương 1 : GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH · Web viewBước 2 : Chia a cho b, được số dư là r. Bước 3 : Nếu r = 0 thì USCLN = b và nhảy sang bước

Tin học đại cương

Chẳng hạn với n = 5

3.4. Hãy in ra mã ASCII của các ký tự từ ‘A’ đến ’Z’ và từ ‘a’ đến ‘z’.

3.5. Viết chương trình tính tổng :

S1=1+1/2+1/3…+ 1/N

S2 =1 + (1+2)/2! + (1+2+3)/3! +…+ (1 + 2 +…+ n)/n!

S3=1 + x+ x2 + x3 + …. + xn,với x và n nhập từ bàn phím .

3.6. In ra màn hình bảng cửu chương 2. (từ 2x1 đến 2x10).

3.7. Tìm tất cả các ước số của một số nguyên n cho trước.

3.8. Nhập vào 1 số nguyên n, cho biết n có phải là số nguyên tố hay không.

3.9. Tìm ước số chung lớn nhất của 2 số.

3.10 Tìm tất cả các số nguyên tố trong khoảng từ 2 tới 1015 và in lên màn hình mỗi dòng

10 số.

39

xx xx xx xx x x x x

x x x x xx x

x xx x

x

xx x

x xx x

x x x x x x x x x