Tải bản đầy đủ (.doc) (45 trang)

Giao trinh turbo pascal

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (202.87 KB, 45 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>2. Bài toán tin học và cách giải quyết</b>

<i><b>a. Bài tốn tin học là gì?</b></i>

Bài tốn trong Tin học khơng dùng để chỉ một bài tố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

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

+ 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ệ.

<i><b>b. Thuật tốn (algorithm)</b></i>

Thuật tốn là một q 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ộttrình tự xác định sao cho theo đó từ Input của bài tốn ta sẽ tìm đợc Output hoặc khẳng định khơngcó Output nh bài tốn địi hỏi. Chỉ những q trình nh vậy mới có khả năng chuyển giao máy tínhthực hiện đợc.

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

+ 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.

<i><b>c. Mơ tả thuật tốn qua sơ đồ</b></i>

Để 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ờilập trình có thể quan sát các bớc của thuật tốn cũng nh dịng thơng tin hình thành và biến đổi trongq trình thuật tố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

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

- 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 tốn

- Chứa các biểu thức điều kiện, và để rẽ nhánh chơngtrì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 tốnvới nhau

<b>3. Cấu trúc của một chơng trình pascal</b>

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

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}

<b>Phần 3: Thân chơng trình</b>

BEGIN {Bắt đầu chơng trình}{ Các câu lệnh }

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

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>Bớc 4: Thốt khỏi Pascal</b>

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

<b>chơng II </b>

<b>các khái niệm cơ bản</b>

<b>I. Một số qui ớc trong ngôn ngữ</b>

<i><b>1. Bộ kí tự</b></i>

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 tốn học thơng dụng: + - * / > >= < <= = ( )....- Dấu gạch nối _

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

<i><b>2. Từ khoá (Key word)</b></i>

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.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Một số từ khoá:

BEGIN END PROCEDURE FUNCTION PROGRAMCONST VAR TYPE IF THEN FOR vvv...

<i><b>3. Tên hay danh hiệu (Indentifier)</b></i>

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ênlà 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 thviệ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ênbiến, tên chơng trình, tên kiểu dữ liệu mới...

<i><b>4. Dịng chú thích</b></i>

Trong q 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ịnglệ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}

<i><b>5. Dấu chấm phẩy </b></i>

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.

<b>II. Các kiểu dữ liệu</b>

<i><b>1. Kiểu logic (Boolean)</b></i>

- 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:

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

<i><b>2. Kiểu số nguyên</b></i>

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

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

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

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

<b>Ví dụ: 5/2=2.50</b>

5 DIV 2=25 MOD 2=1

b:=(a*1245)Div 200;

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

<i><b>3. Kiểu số thực</b></i>

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

Single 1.5*10<small>-45</small> đến 3.4*10<small>38</small> 4 bytesReal 2.9*10<small>-39</small> đến 1.7*10<small>38</small> 6 bytesDouble 5.0*10<small>-324</small> đến 1.7*10<small>308</small> 8 bytesExtended 3.4*10<small>-4932</small> đến 1.1*10<small>4932</small> 10 bytesComp -9.2*10<small>18</small> đến 9.2*10<small>18</small> 8 bytes

<i><b>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</b></i>

Single có giá trị tuyệt đối trong khoảng từ 1.5*10<small>-45</small> đến 3.4*10<small>38</small>. Số có trị tuyệt đối <1.5*10<small>-45</small> đợcxem bằng 0, số có trị tuyệt đối > 3.4*10<small>38</small> khơng biểu diễn đợc. Phạm vi biểu diễn của các kiểu cònlạ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

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

- 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éptoán DIV, MOD cho kiểu số thực.

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

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

Var R: Double;Begin

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 tố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ập80x87. 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.

<i><b>4. Kiểu kí tự (Char)</b></i>

- 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 chng.

- Để 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àmChr(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 tố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’

<i><b>5. Kiểu xâu kí tự (String)</b></i>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

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ôngquá 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

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

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

<i><b>2. Khai báo biến</b></i>

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êncủ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áchnhau dấu phẩy.

Ví dụ:VAR

x,y,z:Real; chọn:Char;Thoat:Boolean;i,j:integer; ten:String[7];

Chú ý:

- Biến String khai báo tối đa là: String[255]. Một biến String đợc cấp một số byte bằng độ dàicủa nó cộng thêm 1. Byte đầu tiên dùng để ghi số ký tự đang đợc lu trữ, mỗi byte còn lại chứa mộtký tự.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

- Có thể vừa khai báo vừa khởi đầu (gán giá trị) cho các biến theo cách sau:Const x = 25.0;

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

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

<i>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.</i>

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 tố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).

- Các phép cộng trừ: cộng (+), trừ (-), phép hoặc (or) .- Các phép so sánh: <, <=, >, >=, =, <>.

<i><b>4. Câu lệnh</b></i>

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à ơ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:

ch-- Câu lệnh đơn giản:Lệnh gán ( := )

Lệnh Nhập – Xuất ( READ, WRITE )

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

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 )..END )LƯnh lùa chän (IF, CASE)

LƯnh lỈp (FOR, REPEAT, WHILE)

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Var A,B: Byte;BEGIN

A:=2; B:=4;

Write( ‘ Day la ket qua cua phep nhan A voi B:’,A*B);Writeln(‘******’);

Write(‘--- ‘);END.

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 ******---

Có hai dạng viết trong thủ tục WRITE và WRITELN là viết có quy cách và viết khơng cóquy cách. Chúng sẽ đợc xét cụ thể với từng kiểu dữ liệu.

<b>a)Ví dụ về dạng viết khơng quy cách:</b>

USES Crt;Var

I: Integer; R: Real; Ch: Char; B: Boolean;BEGIN

I:= 123; R:=123.456; Ch:=’D’; B:=2<5;Writeln(I); {1}

Writeln(R) {2}Writeln(3.14) {3}Writeln(20*2.5) {4}Writeln;

Writeln(Ch); {5}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} inra 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 {7}: chng kêu.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>b) Ví dụ về dạng viết có quy cách</b>

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

<i>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í</i>

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

Sẽ cho kết qua trên màn hình:Dung quen toi!

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

- 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ànphí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ộtbiến Boolean.

- Dữ liệu gõ vào từ bàn phím tơng ứng với biến 1, biến 2,…..END )., biến thứ n và đợc tách riêngbằ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.

<i><b>8. Một số hàm cơ bản trong Turbo Pascal</b></i>

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

PRED(x): Cho giá trị đi trớc x . Ví dụ: PRED(1) cho giá trị 0SUCC(x): cho giá trị đi sau x. Ví dụ: SUCC(1) cho giá trị 2ORD(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

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>chơng II cấu trúc điều kiện</b>

<b>I. Câu lệnh ghép</b>

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ộtcơ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ềukiệ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ênxuống.

Dạng tổng quát của lệnh ghép:BEGIN

<Câu lệnh 1>;<Câu lệnh 2>;<Câu lệnh 3>;...<Câu lệnh n>;END;

<b>II. Câu lệnh điều kiện IF...THEN</b>

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

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ệc1>

ELSE <Công việc 2>;

<i><b>b. Hoạt động:</b></i>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Khi gặp lệnh này chơng trình sẽ đi kiểm tra điều kiện logic, nếu điều kiện logic là đúng sẽ đithực hiện <công việc 1> và bỏ qua <công việc 2>, nếu sai sẽ đi thực hiện <công việc 2> và bỏ qua<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.

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

<small>Điều Kiện logic</small>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Bớc 3: Chơng trìnhProgram PT_bac_nhat;Var

a,b: real;BEGIN

Write('Nhap vao he so a=');Readln(a); Write('Nhap vao he so b=');Readln(b); IF a=0 THEN

Program so_lon_nhat;Var

a,b,c,max:real;BEGIN

Write('Nhap so a=');Readln(a);Write('Nhap so b=');Readln(b);Write('Nhap so c=');Readln(c);Max:=a;

IF Max<b then max:=b;IF Max<c then max:=c;

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

<b>III. C©u lƯnh lùa chän</b>

<i><b>a. CÊu tróc lƯnh</b></i>

CASE <biĨu thøc > OF

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Tập hằng 1: <công việc 1>;Tập hằng 2: <công việc 2>;...Tập hằng n-1: <công việc n-1>;Tập hằng n: <công việc n>;ELSE

<Công việc n+1>;END;

- Tập hằng bao gồm các hằng cụ thể hoặc các đoạn hằng:ví dụ nh

3:<cơng việc>;

1..10:<cơng việc>;{tập hằng là một tập các số nguyên từ 1 đến 10}‘a’..’z’:<cơng việc> ;{tập hằng là tập các kí tự từ a đến z}

- 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ê).

<i><b>b. Hoạt động:</b></i>

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áctậ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ệncơ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ơngcó 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 tr-ờng hợp khơng có ELSE thì chơng trình thốt khỏi cấu trúc này và đi thực hiện các công việc tiếptheo sau cấu trúc.

<i><b>c. Một số ví dụ:</b></i>

<i><b>Ví dụ 1: Nhập vào một số từ 1 đến 5 in ra màn hình số đó bằng chữ, ví dụ nhập vào số 2 in ra</b></i>

màn hình “số hai”* Chơng trìnhProgram Vidu;Var

a: integer;Begin

Write('Nhap vao so a=');readln(a);CASE a OF

1:Writeln('so do la so mot');2:Writeln('so do la so hai');3:Writeln('so do la so ba');4:Writeln('so do la so bon');5:Writeln('so do la so nam');

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

end; Readln;End.

<i><b>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à</b></i>

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 đó.* Chơng trình

Program Vidu;Var

a: integer;Begin

Write('Nhap vao diem cua hoc sinh=');readln(a);CASE a OF

0..4:Writeln('Ban xep loai yeu');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.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<b>Bài tập</b>

<b>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>

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

<b>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</b>

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

<b>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>

<b>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>

<b>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 :</b>

- 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>Bài 8: Lập trình giải biện luận bất phơng trình bậc hai</b>

ax<small>2</small> + bx + c>0 với a,b,c đợc nhập từ bàn phím.

<b>Bài 9: Lập trình giải biện luận hệ phơng trình:</b>

ax + by =cdx + ey = f

Với a,b,c,d,e,f nhập từ bàn phím.

<b>Bài 10: Cho ba số thực a,b,c. Kiểm tra xem bất đẳng thức sau xem có đúng khơng ?</b>

a < b <c

<b>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>

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

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

Z = x-y nếu x>y

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

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

<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>

<b>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ố</b>

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

<b>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>

<b>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</b>

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ằngtrung bình cộng của hai số cịn lại.

<b>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ố</b>

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

<b>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</b>

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ố

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

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>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)</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>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).</b>

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ácnhau chia bởi CD hay không?

<b>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).</b>

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>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ó</b>

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

<b>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>

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

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

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 nd/ 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>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</b>

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/ Vng góc với nhau.

<b>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>

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?

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ế haykhô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ã.

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>chơng III cấu trúc lặp</b>

Trong thực tế khi lập trình có một số bài tốn dùng các cấu trúc thơng thờng sẽ rất dài. Ví dụbài tốn in ra màn hình các số ngun từ 1 cho đến 100 thì ngời lập trình sẽ phải dùng đến 100 câulệ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ơngtrì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định (hay lặp có số lần xác định).

Nếu trong trờng hợp số lần thực hiện công việc không biết trớc mà chỉ dừng công việc khi gặpmột điều kiện nào đó, gọi là lặp khơng xác định.

Để giải quyết các bài toán về lặp Pascal đa ra cho chúng ta một số cấu trúc lặp nh sau:

<b>I. Vòng lặp xác định FOR</b>

<i><b>a. Cấu trúc </b></i>

Vòng lặp FOR có hai dạng:Dạng một: (FOR dạng tiến)

FOR <biến điều khiển>:=giá trị đầu TO <giá trị cuối> DO<Công việc>;

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

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

FOR <biến điều khiển>:=giá trị cuối DOWNTO <giá trị đầu> DO<Công việc>;

Chú ý: Kiểu của <biến điều khiển>, giá trị đầu, giá trị cuối phải có cùng kiểu giá trị và phải làkiểu vơ hớng đếm đợc.

Ngời ta thờng đặt tên cho biến điều khiển là i, j, k..

<i><b>b. Hoạt động</b></i>

* 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ựchiệ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ếptụ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ì thố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ựchiệ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ếptụ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ì thốt khỏi vịng lặp.

<i><b>c. Sơ đồ thuật toán</b></i>

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

* Sơ đổ thuật tốn của vịng FOR dạng tiến

* Sơ đổ thuật tốn của vịng FOR dạng lùi i:=giá trị đầu

<small>i<=giá trị cuối</small>

Công việc

i:=i+1Đ

i:=giá trị cuối

<small>i >=giá trị đầu</small>

Công việc

i:=i -1Đ

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<i><b>d. Một số ví dụ</b></i>

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

Phân tích bài tốn:

Dữ liệu vào là một số ngun 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

<b>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</b>

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ệntrên thì in ra màn hình.

Thuật tốn và sơ đồ- Bắt đầu

Nhập n

In i

<small>N mod i=0</small>

</div>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×