1. Trang chủ
  2. » Giáo án - Bài giảng

Giáo trình Turbo Pascal

51 1,6K 23
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Giáo trình Turbo Pascal
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Tin học
Thể loại Giáo trình
Định dạng
Số trang 51
Dung lượng 234,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thuật toán algorithm Thuật toán là một quá trình gồm một dãy hữu hạn các thao tác đơn giản đợc sắp xếp theo một trình tự xác định sao cho theo đó từ Input của bài toán ta sẽ tìm đợc Outp

Trang 1

chơng I Những kiến thức cơ bản

2 Bài toán tin học và cách giải quyết

a Bài toán tin học là gì?

Bài toán trong Tin học không dùng để chỉ một bài toán cụ thể, mà chỉ một lớp các bài toán cụ thể thuộc cùng một loại Một bài toán tin học đợc cấu tạo bởi hai yếu tố sau:

+ Thông tin vào (Input): Là các thông tin ta có

+ Thông tin ra (Output): Là các thông tin cần tìm hoặc câu trả lời cần thiết

Ví dụ: Để giải bài toán tính diện tích tam giác bằng công thức S=a*h/2.

+ Thông tin vào: Là cạnh đáy a và đờng cao h

+ Thông tin ra : Là diện tích tam giác S hoặc là dòng thông báo dữ liệu không hợp lệ

b Thuật toán (algorithm)

Thuật toán là một quá trình gồm một dãy hữu hạn các thao tác đơn giản đợc sắp xếp theo một trình tự xác định sao cho theo đó từ Input của bài toán ta sẽ tìm đợc Output hoặc khẳng định không

có Output nh bài toán đòi hỏi Chỉ những quá trình nh vậy mới có khả năng chuyển giao máy tính thực hiện đợc

Ví dụ: Trở lại bài toán tính diện tích tam giác, thuật toán nh sau:

+ Bớc 1: Cho giá trị của cạnh đáy a và đờng cao h

+ Bớc 2: Kiểm tra

- Nếu a>0 và h>0 thì đi tính diện tích theo công thức S=a*h/2 và xuống bớc 3

- Ngợc lại thông báo dữ liệu không hợp lệ và quay về bớc 1 + Bớc 3: In diện tích S

c Mô tả thuật toán qua sơ đồ

Trang 2

Để mô tả một cách trực quan hơn về thuật toán ngời ta dùng sơ đồ khối Qua sơ đồ khối ngời lập trình có thể quan sát các bớc của thuật toán cũng nh dòng thông tin hình thành và biến đổi trong quá trình thuật toán làm việc.

Việc thể hiện thuật toán ngời ta qui ớc dùng các khối sau để thể hiện

- Thể hiện sự bắt đầu và kết thc chơng trình

- Thể hiện việc nhập, xuất dữ liệu

- Chứa các công thức,câu lệnh tính toán

- Chứa các biểu thức điều kiện, và để rẽ nhánh chơng trình

- Dùng để gọi chơng trình con

Dẫn hớng chơng trình và nối các khối trong thuật toán với nhau

3 Cấu trúc của một chơng trình pascal

Một chơng trình Pascal bao gồm các thành phần sau:

Phần 1: Tên chơng trình

Luôn bắt đầu bởi từ khoá Program

PROGRAM Tên_chơng_trinh;

Phần 2: Khai báo

USES Tên_các_Unit; {Khai báo th viện dùng trong chơng trình}

CONST Các hằng;{Khai báo hằng sử dụng trong chơng trình}

TYPE Các_kiểu_dữ_liêu_mới;{Khai báo kiểu dữ liệu mới}

VAR Các_biến;{Dùng để khai báo biến sử dụng trong chơng trình}

PROCEDURE Các_thủ_tục;{Khai báo các thủ tục}

FUNCTION Các_hàm; {Khai báo các hàm}

Trang 3

Phần 3: Thân chơng trình

BEGIN {Bắt đầu chơng trình}

{ Các câu lệnh }END {Kết thúc chơng trình}

4 Các bớc soạn thảo và chạy một chơng trình Pascal cơ bản

Khi hoàn tất chơng trình ta ấn phím F9 để dịch chơng trình, Pascal sẽ thông báo cho ta những lỗi

cú pháp nếu trong chơng trình có, tiến hành sửa chữa các lỗi cho chơng trình hoàn chỉnh

Khi chơng trình đã đợc biên dịch xong ta ấn tổ hợp phím CTRL + F9 để chạy chơng trình

Bớc 4: Thoát khỏi Pascal

Để thoát khỏi Pascal ta ấn tổ hợp phím ALT + X

Trang 4

chơng II các khái niệm cơ bản

I Một số qui ớc trong ngôn ngữ

1 Bộ kí tự

Turbo Pascal đợc xây dựng với bộ kí tự sau:

- Các chữ cái: 26 chữ cái hoa (A,B, ,Z)

26 chữ thờng (a,b, z)

- Các chữ số thập phân: 0,1,2,3,4,5,6,7,8,9

- Các dấu toán học thông dụng: + - * / > >= < <= = ( )

- Dấu gạch nối _

- Các kí hiệu đặc biệt: ; {} [ ] : % & @ $ # ^ ! ‘ “ ?

2 Từ khoá (Key word)

Từ khoá là các từ dành riêng cho Turbo Pascal, mỗi từ có một chức năng nhất định Khi sử dụng phải dùng đúng với cú pháp

Một số từ khoá:

BEGIN END PROCEDURE FUNCTION PROGRAM

CONST VAR TYPE IF THEN FOR vvv

3 Tên hay danh hiệu (Indentifier)

Tên là một dãy kí tự đợc tạo thành từ các chữ cái, chữ số và dấu gạch nối Tên thờng dùng để

đặt tên cho các đại lợng trong chơng trình nh tên biến, hằng, tên kiểu dữ liệu mới vv

Kí tự đầu tiên của tên không đợc là chữ số.Tên có độ dài tuỳ ý nhng chỉ có 63 kí tự đầu tiên

là có ý nghĩa, tên không đợc trùng với tên của từ khoá

* Tên chuẩn: là tên do Turbo Pascal định nghĩa trớc dùng chỉ các hàm, hằng, biến, thủ tục th viện của turbo Pascal

* Tên do ngời lập trình đặt: Đặt tuỳ ý nhng phải tuân thủ theo nguyên tắc của Pascal nh tên biến, tên chơng trình, tên kiểu dữ liệu mới

4 Dòng chú thích

Trong quá trình soạn thảo chơng trình để làm sáng tỏ những đoạn chơng trình, những dòng lệnh cụ thể hoặc một công việc nào đó, ngời lập trình thờng đa thêm vào chơng trình dòng chú thích, lời giải thích để là sáng tỏ vấn đề cần nêu Dòng chú thích đợc đặt trong hai dấu ngoặc sau {}

Ví dụ: PROGRAM TG; {Khai báo tên chơng trình tính diện tích tam giác}

5 Dấu chấm phẩy

Trang 5

Dấu chấm phẩy “ ; ” thờng nằm sau các câu lệnh nhằm ngăn cách giữa các câu lệnh với nhau, không lên hiểu dấu “ ; ” dùng để kết thúc một câu lệnh

II Các kiểu dữ liệu

1 Kiểu logic (Boolean)

- Chỉ có hai giá trị: TRUE (đúng), FALSE (sai)

- Quy ớc: FALS < TRUE

- Các phép toán: AND, OR, XOR, NOT

- Tác dụng của các phép toán thể hiện qua bảng:

FALSE FALSE TRUE FALSE FALSE FALSE

Trong đó P và Q là hai giá trị kiểu Boolean

2 Kiểu số nguyên

- Có năm kiểu số nguyên đợc tổng kết qua bảng sau:

- trừ DIV chia lấy phần nguyên

* nhân MOD chia lấy số d của hai số nguyên

Ví dụ: 5/2=2.50

5 DIV 2=2

Trang 6

Chú ý:

- Khi viết các số nguyên phải tuân theo các quy định: không có khoảng trống giữa các số, dấu + hay - (nếu có) phải đặt ngay trớcchữ số đầu tiên, không đợc sử dụng dấu chấm thập phân

- Khi thực hiện các phép tính trên số nguyên, phải hết sức thận trọng xem các phép toán đó

có cho kết quả vợt quá phạm vi biểu diễn của số nguyên hay không Ví dụ khai báo a, b là dữ liệu kiểu Integer Khi đó hai câu lệnh sau:

a:=80;

b:=(a*1245)Div 200;

cho kết quả sai vì a*1245 = 99600 vợt quá phạm vi của Integer

3 Kiểu số thực

- Có năm kiểu số thực, đợc tổng kết qua bảng sau:

Giải thích: Phạm vi biểu diễn của bốn kiểu đầu đợc hiểu nh sau: máy có thể lu trữ đợc một số kiểu

Single có giá trị tuyệt đối trong khoảng từ 1.5*10-45 đến 3.4*1038 Số có trị tuyệt đối <1.5*10-45 đợc xem bằng 0, số có trị tuyệt đối > 3.4*1038 không biểu diễn đợc Phạm vi biểu diễn của các kiểu còn lại đợc hiểu tơng tự

Các giá trị thực đợc biểu diễn theo hai cách: dạng dấu phẩy tĩnh và dạng dấu phẩy động

- Cách viết số thực theo dạng dấu phẩy tĩnh: viết dạng thập phân bình thờng

Ví dụ: 2.25, 5.0, -25.56812, 0.0256

- Cách viết số thực theo dạng dấu phẩy động: số đợc tách thành hai phần là định trị và bậc Phần định trị là một số nguyên hay số thực viết dới dạng dấu phẩy tĩnh Phần bậc là một số nguyên Hai phần cách nhau bởi chữ E hay e

Ví dụ:

123.456E-4 : biểu diễn số 0.01234560.12E+5 : biểu diễn số 12000.0-52.4e2 : biểu diễn số –5240.0Các ký tự biểu diễn một số thực phải viết liền nhau

- Các phép toán đối với số thực: + (cộng), - (trừ), * (nhân), / (chia) Không tồn tại các phép toán DIV, MOD cho kiểu số thực

Trang 7

Chú ý: Trong mode thông thờng, Turbo Pascal chỉ làm việc với kiểu Real, khi đó nếu sử

dụng các kiểu thực khác máy sẽ báo lỗi

Khi biên dịch máy sẽ báo lỗi: Error 116: Must be in 8087 Mode to compile this

Muốn dùng các kiểu Single, Double, Extended, Comp có thể chọn một trong hai cách sau:Cách 1: Dùng bộ coprocessor làm toán có số hiệu 80x87 (8087, 80287, 80387)

Cách 2: Dùng th viện của Turbo Pascal để xử lý các số thực và bật phần mềm giả lập 80x87 Rõ ràng cách làm này sẽ chậm và hiệu quả thấp hơn so với cách dùng coprocessor nhng có u

điểm là ta có thể dùng cách này trên tất cả các may PC mà phần lớn chúng đều không có 80x87

4 Kiểu kí tự (Char)

- Một giá trị kiểu Char chiếm 1 byte và biểu diễn đợc một ký tự thông qua bảng mã ASCII Mã của một ký tự chính là số ký tự của nó trong bảng mã ví dụ: mã (hay số thứ tự) của A là 65 Có tất cả 256 ký tự đánh số từ 0ữ255 Vậy có 256 giá trị kiểu Char Trong bảng mã ASCII các ký tự từ

0ữ31 là các ký tự điều khiển không in ra đợc và dùng để điều khiển quá trình vào ra trên ácc thiết bị ngoại vi Ví dụ: Khi máy nhận đợc ký tự có mã là 7 (Beep) nó sẽ phát ra 1 tiếng chuông

- Để biểu diễn 1 ký tự có thể dùng 1 trong 3 cách: Đặt ký tự trong 2 dấu nháy đơn, dùng hàm Chr(n), dùng #n( trong đó n là mã của ký tự cần biểu diễn)

Ví dụ: Để biểu diễn ký tự A ta có thể dùng 3 cách: ‘A’, Chr(65), #65

- Kiểu ký tự chỉ có phép toán so sánh, sự so sánh dựa vào mã của ký tự

Ví dụ: ‘A’ < ’a’ (vì 65 < 97)

- Hàm Upcase(ch): cho ra ký tự hoa tơng ứng với ký tự ch

Ví dụ: Upcase(‘a’) = ‘A’ và Upcase(‘B’)= ‘B’

5 Kiểu xâu kí tự (String)

Một giá trị kiểu String là một ký tự bất kỳ đặt trong 2 dầu nháy đơn Số ký tự của dãy không quá 255 ký tự Xâu không có ký tự nào gọi là xâu rỗng

Ví dụ: ‘Ho va Ten’ là xâu gồm 9 ký tự

‘’ đây là xâu rỗng

III Khai báo hằng, biến, biểu thức câu lệnh

Trang 8

Hằng là đại lợng có giá trị xác định và không thay đổi trong suốt quá trình chơng trình thực hiện Hằng đợc khai báo bằng từ khoá CONST nh sau:

Chúng ta sử dụng các hằng để chơng trình đợc rõ ràng và dễ sửa đổi

2 Khai báo biến

Biến (variable) là đại lợng mà trị của nó có thể thay đổi khi thực hiện chơng trình Biến là tên của một vùng bộ nhớ lu trữ dữ liệu, mỗi biến phải thuộc về một kiểu dữ liệu nhất định Vùng bộ nhớ của biến kiểu Integer chỉ chứa đợc các giá trị Integer

Biến đợc khai báo bằng từ khoá VAR nh sau:

VAR

Tên biến: Kiểu dữ liệu của biến;

Nhiều biến có cùng kiểu có thể đợc khai báo cùng nhau bằng cách viết tên các biến đặt cách nhau dấu phẩy

Trang 9

Ta có thể viết biểu thức sau: 5+ Max * Exp(x);

trong đó + và * là hai phép toán, các hằng số 5, Max, Exp(x) là các toán hạng

Chú ý: Một hằng, một biến, một hàm cũng đợc xem là biểu thức, đó là biểu thức đơn giản.

Các phép toán trong biểu thức đợc sắp xếp theo thứ tự u tiên sau:

- Các phép toán một ngôi đợc u tiên thứ nhất: dấu dơng (+), dấu âm (-), phép phủ định (not)

- Các phép toán nhân chia: phép nhân (*), phép chia (/), lấy phần nguyên (div), lấy phần d (mod), phép và (and)

2

+

4 Câu lệnh

Dới phần khai báo dữ liệu là phần lệnh của chơng trình Phần này xác định các công việc mà

ch-ơng trình phải thực hiện để xử lý các dữ liệu đã đợc khai báo Câu lệnh đợc chia ra làm hai loại:

- Câu lệnh đơn giản:

Trang 10

LÖnh g¸n ( := )LÖnh NhËp – XuÊt ( READ, WRITE )Gäi Thñ tôc

LÖnh nh¶y ( GOTO)

- C©u lÖnh cã cÊu tróc:

LÖnh ghÐp ( BEGIN END )…LÖnh lùa chän (IF, CASE)LÖnh lÆp (FOR, REPEAT, WHILE)

Trang 11

WRITELN; (3)Dạng (1): in lên màn hình giá trị các biểu thức tại vị trí hiện hành của con trỏ theo thứ tự viết trong lệnh và sau lệnh này con trỏ ở vị trí sau giá trị của biểu thức thứ n.

Dạng (2): in lên màn hình giá trị các biểu thức tại vị trí hiện hành của con trỏ theo thứ tự viết trong lệnh và sau đó đa con trỏ về đầu dòng mới

Dạng (3): đa con trỏ về đầu dòng mới

Kết quả trên màn hình sau khi chạy chơng trình:

Day la ket qua cua phep nhan A voi B: 8 ******

Trang 12

Writeln(B); {6}

Writeln(#7); {7}

END

Cách viết không quy cách sẽ căn lề theo bên trái

- Số nguyên đợc viết ra với số chỗ đúng bằng số chữ số gán vào, kể từ vị trí bên trái Lệnh {1} in ra: 123

- Số thực đợc viết ra với trình tự sau: một dấu cách, một số phần nguyên, dấu chấm, 10 chỗ phần thập phân, chữ E, dấu của phần mũ, hai số biểu diễn giá trị phần mũ Các lệnh {2}, {3},{4} in

ra các số 1.2345600000E+02, 3.1400000000E+00, 5.0000000000E+01

- Kiểu ký tự in bình thờng, một ký tự chiếm một chỗ Lệnh {5} in ra: D

- Kiểu Boolean đợc viết ra từ TRUE hay FALSE Lệnh {6} in ra: TRUE

- Lệnh {5} in giá trị của R với số chỗ 12 dới dạng mũ: 1.23456E+02

Trang 13

- Lệnh {6}, {7} dành 5 chỗ để in chữ D và xâu ký tự ABC.

- Lệnh {8} dành 7 ký tự để in TRUE

- Trong lệnh in một số thực Write(Z:m:n) nếu m<n thì số thực Z đợc in với n số lẻ, còn số chỗ trên màn hình thì tuỳ vào độ dài của số Z, máy sẽ dành đủ chỗ để in số Z Lệnh {9} sẽ in ra: 543621.34 Trong trờng hợp m > n , nếu độ dài của số lớn hơn m thì số bị cắt

Chú ý: Vì dấu ‘ đợc dùng để đánh dấu ký tự, do đó khi muốn viết nó ta viết hai lần dấu ‘ Ví

dụ: Write(‘ Dung quen toi!’);

Dạng (1): Khi thực hiện lệnh này, máy tính sẽ dừng lại đợi ngời sử dụng da vào (từ bàn phím)

đủ n dữ liệu cho n biến tơng ứng

Dạng (2): dùng để tạm dừng chơng trình, muốn chạy tiếp thì nhấn Enter

Chú ý:

- Các biến ở đây thuộc kiểu nguyên, thực, ký tự hay xâu ký tự Do đó chỉ có thể nạp từ bàn phím các giá trị số và ký tự Sẽ là một ý đồ sai nếu ta định nạp vào giá trị TRUE hay FALSE cho một biến Boolean

- Dữ liệu gõ vào từ bàn phím tơng ứng với biến 1, biến 2, , biến thứ n và đ… ợc tách riêng bằng một hay vài dấu cách Sau khi dữ liệu đợc vào ta ấn phím Enter để máy thực hiện lệnh Các dữ liệu vào phải phù hợp với kiểu tơng ứng

8 Một số hàm cơ bản trong Turbo Pascal

SQRT(x): Hàm căn bậc hai của x

SQR(x): Hàm bình phơng của một số nguyên hay thực

ABS(x): Hàm trị tuyệt đối của x

SIN(x): Tính giá trị sin(x) với x là radian

COS (x): Tính giá trị Cos(x) với x là radian

ARCTAN(x): Hàm tính giá trị Arctg(x)

LN(x): Hàm Lôga cơ số e=2.718

EXP(x): Hàm tính ex

TRUNC(x): Cắt bỏ phần lẻ thập phân của x nếu có

ROUND(x):Cho số nguyên gần x nhất

Trang 14

PRED(x): Cho gi¸ trÞ ®i tríc x VÝ dô: PRED(1) cho gi¸ trÞ 0

SUCC(x): cho gi¸ trÞ ®i sau x VÝ dô: SUCC(1) cho gi¸ trÞ 2

ORD(ch): Cho sè thø tù cña ký tù ch trong b¶ng m·

CHR(n): Tr¶ vÒ ký tù cã sè thø tù n trong b¶ng m·

ODD(n): Cho kÕt qu¶ true nÕu n lÎ, False nÕu ngîc l¹i

ch¬ng II cÊu tróc ®iÒu kiÖn

Trang 15

I Câu lệnh ghép

Lệnh ghép là một nhóm lệnh đợc đặt giữa hai từ khoá BEGIN và END; nhằm thực hiện một công việc cơ bản nào đó Lệnh ghép thờng xuất hiện trong các cấu trúc chơng trình nh câu lệnh điều kiện, cấu trúc lặp Khi thực hiện kệnh ghép thực hiện tuần tự từng câu lệnh một theo thứ tự từ trên xuống

II Câu lệnh điều kiện IF THEN

a Câu lệnh điều kiện có hai dạng nh sau:

Câu lệnh điều kiện thiếu:

IF <Điều kiện logic> THEN

<Công việc>;

Câu lệnh điều kiện đủ:

IF <Điều kiện logic> THEN

<công việc 1> Trong đó <công việc1>, <công việc 2> có thể là một câu lệnh ghép

c Sơ đồ thuật toán cho câu lệnh điều kiện đủ:

Trang 16

Bíc 3: Ch¬ng tr×nh

Program PT_bac_nhat;

Var

§iÒu KiÖn logic

END.

Trang 17

a,b: real;

BEGIN

Write('Nhap vao he so a=');Readln(a);

Write('Nhap vao he so b=');Readln(b);

IF a=0 THEN

IF b=0 THEN

Writeln('Phuong trinh vo so nghiem')

ELSE Writeln('Phuong trinh vo nghiem)

ELSE Writeln('Phuong trinh co nghiem x=',-b/a:6:2);

IF Max<b then max:=b;

IF Max<c then max:=c;

Writeln('So lon nhat trong ba so la:',max:6:2);

Trang 18

- Giá trị của biểu thức và giá trị trong các tập hằng phải có cùng kiểu và phải là kiểu vô hớng

đếm đợc (nh nguyên, logic, kí tự, liệt kê)

b Hoạt động:

Khi gặp lệnh này chơng trình sẽ lấy giá trị của biểu thức đem so sánh với giá trị chứa trong các tập hằng, nếu giá trị của biểu thức trùng với giá trị chứa trong một các tập hằng thì sẽ đi thực hiện công việc tơng ứng với tập hằng đó và bỏ qua tất cả các công việc khác Nếu trong trờng hợp không

có giá trị của tập hằng nào trùng với giá trị của biểu thức thì đi thực hiện <công việc n+1>, trong ờng hợp không có ELSE thì chơng trình thoát khỏi cấu trúc này và đi thực hiện các công việc tiếp theo sau cấu trúc

Trang 19

Ví dụ 2: Viết chơng trình nhập vào một điểm kiểm tra của một học sinh từ bàn phím (điểm là

số nguyên từ 0 đến 10), in ra màn hình kết quả xếp loại của học sinh đó

5,6:Writeln('Ban xep loai trung binh');

7,8:Writeln('Ban xep loai kha');

9,10:Writeln('Ban xep loai gioi');

end;

Readln;

End

Bài tập Bài 1: Lập trình nhập vào từ bàn phím 3 số, tìm số lớn nhất trong 3 số đó.

Bài 2: Lập trình giải phơng trình bậc hai ax2 + bx +c = 0 với a, b, c nhập từ bàn phím

Trang 20

Bài 3: Cho 3 số thực dơng Kiểm tra xem chúng có tạo nên 3 cạnh của một tam giác hay không? Nếu

đúng, hãy tính diện tích tam giác

Bài 4: Lập trình nhập vào từ bàn phím 4 số, tìm số lớn nhất trong 4 số đó.

Bài 5: Lập trình nhập vào từ bàn phím 3 số, in ba số đó ra màn hình theo thứ tự tăng dần.

Bài 6: Tìm |a| với a cho trứơc

Bài 7: Tính số ngày của tháng, năm bất kỳ cho trớc theo thuật giải :

- Nếu là tháng 4,6,9,11 thì số ngày là 30

- Nếu là tháng 1,3,5,7,8,10,12 thì số ngày là 31

- Nếu là tháng 2

+ Nếu số năm chia hết cho 4 thì tháng 2 có 29 ngày, còn lại tháng 2 có 28 ngày

Bài 8: Lập trình giải biện luận bất phơng trình bậc hai

Bài 11: Cho ba số thực a, b, c Hãy thay mỗi số bằng hai lần chính nó nếu a ≥ b ≥ c, ngợc lại thay

bằng trị tuyệt đối của chúng

Bài 12: Cho hai số thực x và y Hãy tính Z với

Z = x-y nếu x>y

= y- x + 1 trong trờng hợp còn lại

Bài 13: Cho hai số thực a và b hãy thay a = 0 nếu a ≥ b

Bài 14: Cho ba số thực x, y, z hãy chỉ ra các số thuộc khoảng (3, 5)

Bài 15: Cho hai số thực x và y hãy thay số bé trong chúng bằng trung bình cộng của chúng và số

còn lại bởi tích của chúng

Bài 16: Cho ba số thực x, y, z hãy thay tất cả các số âm bằng bình phơng của nó.

Bài 17: Cho ba số thực a, b, c đôi 1 khác nhau mà có tổng bé hơn một thì thay số bé nhất trong

chúng bằng trung bình cộng của chúng, ngợc lại số nhỏ hơn trong hai số a và b thay bằng trung bình cộng của hai số còn lại

Trang 21

Bài 18: Với 4 số thực a,b,c,d Nếu a ≤ b ≤ c ≤ d thì thay mọi số bằng d; Nếu a >b>c>d thì các số

không thay đổi , ngợc lại thay mỗi số bằng bình phơng của nó

Bài 19: Cho hai số thực x và y nếu x và y đều âm thì thay mỗ số bằng trị tuyệt đối của chúng Nếu

chỉ một trong hai số âm thì tăng mỗi số lên 0.5 Nếu cả hai số đều không âm và không có số nào thuộc khoảng [1,2] thì thay mỗi số bằng 10 lần chính nó các trờng hợp ngợc lại hai số không thay đổi

Bài 20: Cho các số thực a,b,c,d,s,t,u, trong đó t và s không đồng thời bằng 0 Biết rằng hai điểm (a,b)

và (c,d) không nằm trên đờng thẳng l: sx + ty + u=0 Hãy xác định xem hai điểm (a,b) và (c,d) có cùng nằm trên một phần mặt phẳng mà chia bởi đờng thẳng l hay không?

Bài 21: Trên mặt phẳng cho 4 điểm A, B, C, D xác định bởi tọa độ A(a,b), B(c,d), C(e,f), D(g,h)

Kiểm tra xem hai điểm A và B có nằm trên đờng thẳng đi qua C và D không? Nếu cả hai

điểm A và B không nằm trên đờng thẳng CD thì chúng có nằm ở hai nửa mặt phẳng khác nhau chia bởi CD hay không?

Bài 22: Trên mặt phẳng cho 4 điểm A, B, C, D xác định bởi tọa độ A(a,b), B(c,d), C(e,f), D(g,h)

Kiểm tra xem điểm D có nằm trong tam giác tạo bởi 3 điểm A,B,C không, nếu nằm trong thì nằm trên cạnh hay ở trong hẳn tam giác

Bài 23: Cho một số nguyên không âm a Hãy xác định xem phần d của phép chia a cho số dơng b có

phải là r hoặc t hay không

Bài 24: Cho số tự nhiên n ( n > 99) Hãy tìm chữ số hàng đơn vị của n.

Bài 25: Cho số tự nhiên n (n<=99) Kiểm tra xem n2 có bằng tổng các lập phơng các chữ số của n

hay không

Bài 26: Cho số tự nhiên n (n <= 1000).

a/ Số tự nhiên n có bao nhiêu chữ số

b/ Tìm tổng các chữ số của n

c/ Tìm chữ số cuối cùng của n

d/ Tìm chữ số đầu tiên của n

e/ Với n>=10 Hãy tìm chữ số hàng chục của n

Bài 27: Cho hai số nguyên m và n (1<=m<=12; 0<=n<60) cho biết thời gian tại thời điểm “ m giờ n

phút” Hãy xác định thời gian bé nhất, mà sau khoảng thời gian đó hai kim đồng hồ sẽ :a/ Trùng nhau

b/ Vuông góc với nhau

Bài 28: Cho bàn cờ quốc tế 8 x 8 ô vuông , mỗ ô xác định bởi một cặp số nguyên dơng bé hơn hay

bằng 8(i,j) trong đó i là chỉ số dòng, j là chỉ số cột của ô đó Cho hai ô bất kỳ (i,j) và (k,l).a/ Xác định xem 2 ô đó có cùng màu hay không?

Trang 22

b/ Trên ô (i,j) đặt một con hậu hãy kiểm tra xem ô (k,l) có bị con hậu đó khống chế hay không?

c/ Tơng tự nh câu b/ nhng thay hậu bằng tợng

d/ Tơng tự nh câu b/ nhng thay hậu bằng mã

e/ Có thể đi từ ô (i,j) tới ô (k,l) bằng hai nớc đi liên tiếp của con xe hay không?

f/ Tơng tự nh câu e nhng thay xe bằng mã

chơng III cấu trúc lặp

Trang 23

Trong thực tế khi lập trình có một số bài toán dùng các cấu trúc thông thờng sẽ rất dài Ví dụ bài toán in ra màn hình các số nguyên từ 1 cho đến 100 thì ngời lập trình sẽ phải dùng đến 100 câu lệnh Write (Writeln) tức là thực hiện lại câu lệnh đó 99 lần hoặc khi tính tổng của n số nguyên ta th-ờng phải thực hiện phép cộng hai số nguyên n-1 lần.

Vậy hiện tợng một công việc nào đó đợc thực hiện đi thực hiện lại nhiều lần trong một chơng trình thì ngời ta gọi là lặp

Nếu trong trờng hợp số lần thực hiện công việc biết trớc là bao nhiều lần ngời ta gọi là lặp xác

Dạng hai: (FOR dạng lùi)

FOR <biến điều khiển>:=giá trị cuối DOWNTO <giá trị đầu> DO

* Hoạt động của vòng FOR dạng tiến:

Ban đầu biến điều khiển nhận giá trị đầu sau đó kiểm tra giá trị của biến điều khiển với giá trị cuối Nếu giá trị của biến điều khiển <= giá trị cuối thì đi thực hiện công việc sau DO, sau khi thực hiện công việc xong, quay trở về đầu vòng lặp tăng giá trị của biến điều khiển lên một đơn vị và tiếp tục so sánh với giá trị cuối, quá trình tiếp tục cho đến khi giá trị của biến điều khiển lớn hơn giá trị cuối thì thoát khỏi vòng lặp

* Hoạt động của vòng FOR dạng lùi:

Ban đầu biến điều khiển nhận giá trị cuối sau đó kiểm tra giá trị của biến điều khiển với giá trị

đầu Nếu giá trị của biến điều khiển >= giá trị đầu thì đi thực hiện công việc sau DO, sau khi thực hiện công việc xong, quay trở về đầu vòng lặp tăng giá trị của biến điều khiển lên một đơn vị và tiếp tục so sánh với giá trị đầu, quá trình tiếp tục cho đến khi giá trị của biến điều khiển nhỏ hơn giá trị

đầu thì thoát khỏi vòng lặp

Trang 24

c Sơ đồ thuật toán

Giả sử biến điều khiển là i

* Sơ đổ thuật toán của vòng FOR dạng tiến

* Sơ đổ thuật toán của vòng FOR dạng lùi

d Một số ví dụ

Ví dụ 1: Tìm tất cả các ớc số của một số nguyên n cho trớc

Phân tích bài toán:

Dữ liệu vào là một số nguyên n nhập từ bàn phím Dữ liệu ra là tất cả các ớc số của số nguyên

n Một số i đợc gọi là ớc số của n khi n chia cho số đó không d, tức là n mod i=0 Ta xây dựng một

vòng lặp từ 1 tới n và kiểm tra tất cả các số nguyên trong khoảng đó xem số nào thoả mãn điều kiện trên thì in ra màn hình

i:=giá trị đầu

i<=giá trị cuối

Ngày đăng: 22/07/2013, 01:28

HÌNH ẢNH LIÊN QUAN

Sơ đồ thuật toán. - Giáo trình Turbo Pascal
Sơ đồ thu ật toán (Trang 26)
Sơ đồ thuật toán dùng vòng lặp Repeat - Giáo trình Turbo Pascal
Sơ đồ thu ật toán dùng vòng lặp Repeat (Trang 28)

TỪ KHÓA LIÊN QUAN

w