1. Trang chủ
  2. » Công Nghệ Thông Tin

Lý thuyết và bài tập pascal bậc thcs

72 1,8K 0

Đ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

Định dạng
Số trang 72
Dung lượng 0,95 MB
File đính kèm 10_TongHop_THCS_Version 1.1.zip (521 KB)

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

Nội dung

Ngày nay, Tin học đã trở thành một môn học quan trọng, có hoạt động trí tuệ sáng tạo và hấp dẫn đối với nhiều học sinh, các thầy cô giáo và các bậc phụ huynh. “Tài liệu giảng dạy lập trình khối trung học cơ sở” nhằm phục vụ cho công tác phát hiện, tuyển chọn và bồi dưỡng các học sinh có năng khiếu Tin học ở cấp Trung học cơ sở tham gia kì thi Tin học trẻ được tổ chức hàng năm. Tài liệu trình bày dưới dạng các chuyên đề. Mỗi chuyên đề bao gồm phần tóm tắt ngắn gọn các khái niệm lý thuyết, các ví dụ minh họa và bài tập thực hành được phân loại theo nhiều dạng khác nhau giúp học sinh thấy được nhiều khía cạnh của vấn đề. Nội dung chuyên đề được tham khảo từ nhiều nguồn khác nhau: internet, sách tham khảo, giáo trình, đề thi …

Trang 1

N K T H

Mục lục

Chuyên đề 1 NGÔN NGỮ LẬP TRÌNH 4

I TÓM TẮT LÝ THUYẾT 4

1 Khái niệm 4

2 Mô tả thuật thoán 4

3 Sử dụng Free Pascal 4

4 Các bước cơ bản khi lập một chương trình bằng Pascal 5

5 Các thành phần cơ bản của ngôn ngữ Pascal 5

II VÍ DỤ 5

III BÀI TẬP 5

Chuyên đề 2 CẤU TRÚC CHƯƠNG TRÌNH 7

I TÓM TẮT LÝ THUYẾT 7

1 Cấu trúc của một chương trình 7

2 Khai báo hằng 7

3 Khai báo biến 7

4 Các kiểu dữ liệu cơ bản 7

5 Biểu thức 8

6 Câu lệnh cơ bản 9

7 Nhập xuất từ tệp 9

II VÍ DỤ 10

III BÀI TẬP 12

IV HƯỚNG DẪN 14

Chuyên đề 3 CẤU TRÚC RẼ NHÁNH 15

I TÓM TẮT LÝ THUYẾT 15

1 Lệnh IF 15

2 Lệnh CASE 15

II VÍ DỤ 16

III BÀI TẬP 16

IV HƯỚNG DẪN 18

Chuyên đề 4 CẤU TRÚC LẶP 19

I TÓM TẮT LÝ THUYẾT 19

1 Vòng lặp xác định 19

2 Vòng lặp không xác định 19

II VÍ DỤ 20

III BÀI TẬP 24

IV HƯỚNG DẪN 26

Chuyên đề 5 MẢNG MỘT CHIỀU 27

I TÓM TẮT LÝ THUYẾT 27

1 Khái niệm 27

Trang 2

2 Khai báo 27

3 Truy xuất phần tử 27

4 Số ngẫu nhiên 27

II VÍ DỤ 28

III BÀI TẬP 31

IV HƯỚNG DẪN GIẢI 35

Chuyên đề 6 MẢNG HAI CHIỀU 37

I TÓM TẮT LÝ THUYẾT 37

1 Khái niệm 37

2 Khai báo 37

3 Truy xuất phần tử 37

II VÍ DỤ 38

III BÀI TẬP 42

IV HƯỚNG DẪN GIẢI 46

Chuyên đề 7 XÂU KÍ TỰ 48

I TÓM TẮT LÝ THUYẾT 48

1 Khái niệm 48

2 Khai báo 48

3 Phép toán trên xâu 48

4 Hàm và thủ tục 49

5 Kiểu kí tự Char 49

II VÍ DỤ 49

III BÀI TẬP 52

IV HƯỚNG DẪN 55

Chuyên đề 8 KIỂU BẢN GHI 57

I TÓM TẮT LÝ THUYẾT 57

1 Khái niệm 57

2 Khai báo – Sử dụng biến kiểu bản ghi 57

II VÍ DỤ 58

III BÀI TẬP 59

Chuyên đề 9 CHƯƠNG TRÌNH CON 61

I TÓM TẮT LÝ THUYẾT 61

1 Khái niệm 61

2 Hàm – Thủ tục 62

3 Tham số trong chương trình con: 63

4 Đệ quy 64

II VÍ DỤ 65

III BÀI TẬP 67

Chuyên đề 10 THƯ VIỆN 69

I TÓM TẮT LÝ THUYẾT 69

Trang 3

N K T H

1 Khái niệm 69

2 Unit Crt 69

3 Unit Graph 70

II VÍ DỤ 71

III BÀI TẬP 72

Trang 4

1.1 Bài toán (problem)

Trong toán học: Là vấn đề ta muốn giải quyết

Trong tin học: Là vấn đề ta muốn máy tính giải quyết.

1.2 Đầu vào – đầu ra

Đầu vào của bài toán (Input): dữ liệu cần cung cấp cho máy tính

Đầu ra của bài toán (Output): là kết quả máy tính thực hiện được.

1.3 Thuật toán

Thuật toán: là một dãy các bước hữu hạn sao cho khi máy tính thực hiện tuần

tự các bước đó thì từ input ta tìm được output của bài toán

2 Mô tả thuật thoán

Có 3 cách để mô tả thuật toán:

Liệt kê : sử dụng ngôn ngữ tự nhiên để mô tả

Turbo Pascal, Free Pascal: là môi trường để lập trình bằng NNLT Pascal, hỗ

trợ soạn thảo, biên dịch, thông dịch chương trình

Trang 5

N K T H

Download bản cài trên Windows:

http://freepascal.org/down/i386/win32.var

B1: Chạy chương trình Free Pascal:

\FPC\2.0.4\bin\i386-win32\fp.exe (2,199KB)

B2: Mở cửa sổ soạn thảo mới: File  New

B3: Soạn thảo chương trình

B4: lưu lại chương trình FILE  SAVE AS

B5: chạy thử chương trình RUN  RUN (CTRL + F9)

4 Các bước cơ bản khi lập một chương trình bằng

Pascal

Bước 1: Soạn thảo chương trình.

Bước 2: Dịch chương trình (nhấn phím F9), nếu có lỗi thì phải sửa lỗi.

Bước 3: Chạy chương trình (nhấn phím Ctrl-F9).

5 Các thành phần cơ bản của ngôn ngữ Pascal

1 Khởi động Turbo Pascal

2 Nhập vào đoạn chương trình sau:

Uses Crt;

Begin

Writeln(‘***********************************************************’); Writeln(‘* CHUONG TRINH PASCAL DAU TIEN CUA TOI *’); Writeln(‘* Oi! Tuyet voi! *); Writeln(‘***********************************************************’);

Trang 6

Readln;

End.

3 Dịch và chạy chương trình trên

4 Lưu chương trình vào đĩa với tên BAI1.PAS

5 Thoát khỏi Pascal

6 Khởi động lại Turbo Pascal

7 Mở file BAI1.PAS

8 Chèn thêm vào dòng: CLRSCR; vào sau dòng BEGIN

9 Dịch và chạy thử chương trình

10 Lưu chương trình vào đĩa

11 Thoát khỏi Pascal

Bài 2 Xuất hình

In ra màn hình những hình sau đây

*

***

*****

*******

* * * * * * * * * *

* * * * * * * * * *

* * * * * * * * * *

* * * * * * * * * *

* *

* * * * * * * * * * * * * * *

******* Bài 3 Xuất chữ Viết chương trình in ra màn hình các hình sau: * ******** *******

*** ** ** ** **

** ** ** ** **

** ** ******** * *

********* ** ** **

** ** ** ** ** **

** ** ******** ********

Trang 7

N K T H

Chuyên đề 2 CẤU TRÚC CHƯƠNG TRÌNH

I TÓM TẮT LÝ THUYẾT

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

{ Phần tiêu đề }

PROGRAM Tên_chương_trình;

{ Phần khai báo }

USES ;

CONST .;

TYPE ;

VAR .;

PROCEDURE .;

FUNCTION ;

{ Phần thân chương trình } BEGIN

END.

2 Khai báo hằng

Hằng là một đại lượng có giá trị không thay đổi trong suốt quá trình thực hiện của chương trình chứa nó

Cú pháp:

CONST <Tên hằng> = <Giá trị>;

hoặc:

CONST <Tên hằng>:= <Biểu thức hằng>;

3 Khai báo biến

Biến là một đại lượng mà giá trị của nó có thể thay đổi trong quá trình thực hiện chương trình

Cú pháp:

VAR <Tên biến>[,<Tên biến 2>, ] : <Kiểu dữ liệu>;

4 Các kiểu dữ liệu cơ bản

4.1 Kiểu logic

- Từ khóa: BOOLEAN

- Miền giá trị: (TRUE, FALSE)

- Các phép toán: phép so sánh (=, <, >) và các phép toán logic: AND, OR, XOR, NOT.

4.2 Kiểu số nguyên

a Các kiểu số nguyên

Trang 8

+, -, *, / (phép chia cho ra kết quả là số thực).

Phép chia lấy phần nguyên: DIV (Ví dụ : 34 DIV 5 = 6).

Phép chia lấy số dư: MOD (Ví dụ: 34 MOD 5 = 4).

4.3 Kiểu số thực

Các kiểu số thực:

Single 1.5×10-45 → 3.4×10+38 4 byteReal 2.9×10-39 → 1.7×10+38 6 byteDouble 5.0×10-324 → 1.7×10+308 8 byteExtended 3.4×10-4932 → 1.1×10+4932 10 byte

Các phép toán trên kiểu số thực: +, -, *, /

Chú ý: Trên kiểu số thực không tồn tại các phép toán DIV và MOD.

Một số hàm số học thông dụng

SQRT(x): Trả về căn bậc hai của x (x≥0)

SIN(x): Trả về sin(x) theo radian

COS(x): Trả về cos(x) theo radian

EXP(x): Trả về ex

TRUNC(x): Trả về số nguyên gần với x nhất nhưng bé hơn x

ROUND(x): Làm tròn số nguyên x

INC(n): Tăng n thêm 1 đơn vị (n:=n+1)

DEC(n): Giảm n đi 1 đơn vị (n:=n-1)

5 Biểu thức

Biểu thức (expression) là công thức tính toán mà trong đó bao gồm các phép toán, các hằng, các biến, các hàm và các dấu ngoặc đơn

Ví dụ: (x +sin(y))/(5-2*x) biểu thức số học

(x+4)*2 = (8+y) biểu thức logic

Trong một biểu thức, thứ tự ưu tiên của các phép toán được liệt kê theo thứ tự sau:

1 Lời gọi hàm

2 Dấu ngoặc ()

3 Phép toán một ngôi (NOT, -)

Trang 9

N K T H

4 Phép toán *, /, DIV, MOD, AND

5 Phép toán +, -, OR, XOR

6 Phép toán so sánh =, <, >, <=, >=, <>, IN

6 Câu lệnh cơ bản

6.1 Câu lệnh gán

<Tên biến>:=<Biểu thức>;

6.2 Câu lệnh xuất dữ liệu

Để xuất dữ liệu ra màn hình, ta sử dụng ba dạng sau:

- Viết không qui cách: dữ liệu xuất ra sẽ được canh lề ở phía bên trái Nếu dữ

liệu là số thực thì sẽ được in ra dưới dạng biểu diễn khoa học

Hello Hello 500

500 1.2345700000E+02 123.46

Trang 10

Ngoài cách “đọc từng giá trị”, ta có thể “đọc từng dòng trong tệp” bằng thủ tục

Cú pháp: Readln(BiếnTệp, Danh sách Biến);

Thủ tục này đọc tất cả các giá trị trên dòng hiện tại, sau đó con trỏ sẽ nhảy xuống dòng kế tiếp

Ví dụ 1 Diện tích tô đen

Tính và đưa ra màn hình diện tích phần tô đen trong hình sau

Trang 11

N K T H

Writeln(‘Dien tich to den la:’,S:0:2);

Readln;

End.

Ví dụ 2 Diện tích tam giác DTTG

Viết chương trình nhập vào độ dài hai cạnh của tam giác và góc giữa hai cạnh đó, sau

đó tính và in ra màn hình diện tích của tam giác

Write('Nhap vao do dai canh thu nhat: '); Readln(a);

Write('Nhap vao do dai canh thu hai: '); Readln(b);

Write('Nhap vao goc giua hai canh: '); Readln(goc);

Dientich:=a*b*sin(goc)/2;

Writeln('Dien tich cua tam giac la: ',Dientich:0:2);

Readln;

End.

Ví dụ 3 Hoán đổi HOANDOI

Viết chương trình nhập vào 2 số a, b Sau đó hoán đổi giá trị của 2 số đó:

Chương trình 1: Dùng biến trung gian

Program Swap;

Var a,b,tam: Integer;

Begin

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

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

tam:=a; {tam lấy giá trị của a}

a:=b; {a lấy giá trị của b}

b:=tam; {b lấy lại giá trị của tam}

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

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

a:=a+b; {a lấy tổng giá trị của a+b}

b:=a-b; {b lấy giá trị của a}

a:=a-b; {a lấy lại giá trị của b}

Trang 12

Assign(fi, finame); Reset(fi);

Assign(fo, foname); Rewrite(fo);

Bài 1 Tính biểu thức BIEUTHUC

Viết chương trình nhập vào các số nguyên: a, b, x, y, sau đó in ra màn hình kết quả của các biểu thức sau:

Bài 2 Diện tích tam giác DTTG

Cho độ dài 3 cạnh tam giác Viết chương trình tính diện tích tam giác

Bài 3 Cực đại CUCDAI

Viết chương trình tách một số n thành 2 số a, b sao cho tích P=a*b2 đạt cực đại với n được nhập vào từ bàn phím

Bài 4 Diện tích lớn nhất DTLN

Cho chu vi của một hình chữ nhật In ra màn hình diên tích lớn nhất mà hình chữ nhật

có thể có được

Ví dụ:

Nhap chu vi: 20

Dien tich lon nhat co the: 25

Bài 5 Đếm số byte1 DEMBYTE1

Màn hình đồ họa của một máy tính có độ phân giải: 640x480 Biết rằng, mỗi điểm trên màn hình chiếm 1 byte Hỏi cần bao nhiêu byte để lưu trữ toàn bộ màn hình đồ họa đó?

Có 2 sinh viên viết chương trình tính số byte lưu trữ màn hình đồ họa:

Trang 13

N K T H

Hãy cho biết 2 chương trình trên cho kết quả đúng hay sai? Tại sao?

Bài 6 Đếm số byte2 DEMBYTE2

Màn hình đồ họa của một máy tính có độ phân giải: 640x480 Biết rằng, mỗi điểm trên màn hình chiếm 1 byte Hỏi cần bao nhiêu byte để lưu trữ một vùng có kích thước bằng 1/10 màn hình đồ họa đó?

Có 2 sinh viên viết chương trình giải bài toán này như sau:

Ví dụ: nhap so n = 2314 Tong chu so la 10

Bài 9 Căn bậc n CAN

Viết chương trình tính n x, x>0

Bài 10 Nhập xuất từ tệp TEP

Viết lại chương trình cho các bài tập trên, yêu cầu nhập xuất từ tệp

Trang 14

Bài 2 Cực đại CUCDAI

Gọi x là số thứ hai thì số thứ nhất là: (n-x) Theo đề ta có: P(x) = x2.(n-x).Hàm P đạt cực đại khi P’(x) = -3x2 + 2nx = 0  x = 2n/3

Bài 3 Căn bậc n CAN

Write('Nhap vao n= '); Readln(n);

Write('Nhap vao x= '); Readln(x);

S:=EXP(1/n*LN(x));

Writeln('S = ',S:0:2);

Readln;

End.

Trang 15

N K T H

Const n: S n ; END;

CASE B OF

Const 1: S 1 ; Const 2: S 2 ;

Const n: S n ; ELSE S n+1 ;

END;

Trong đó:

- B: Biểu thức kiểu vô hướng đếm được như kiểu nguyên, kiểu logic, kiểu ký tự,

kiểu liệt kê

- Const i: Hằng thứ i, có thể là một giá trị hằng, các giá trị hằng (phân cách nhau

bởi dấu phẩy) hoặc các đoạn hằng (dùng hai dấu chấm để phân cách giữa giá trị đầu và giá trị cuối)

- Giá trị của biểu thức và giá trị của tập hằng i (i=1¸n) phải có cùng kiểu

Khi gặp lệnh CASE, chương trình sẽ kiểm tra:

- Nếu giá trị của biểu thức B nằm trong tập hằng const i thì máy sẽ thực hiện lệnh

Si tương ứng

- Ngược lại:

+ Đối với dạng 1: Không làm gì cả

+ Đối với dạng 2: thực hiện lệnh Sn+1

Trang 16

Ví dụ 1 Kiểm tra chẵn lẻ CHANLE

Viết chương trình nhập vào một số nguyên và kiểm tra xem số vừa nhập là số chẵn hay số lẻ

Ví dụ 2 Giải phương trình bậc nhất PTBI

Viết chương trình giải phương trình bậc nhất ax+b=0

1 17: Writeln(Nguoi nay la thieu nien');

18 39: Writeln(Nguoi nay la thanh nien');

40 60: Writeln(Nguoi nay la trung nien');

Else Writeln(Nguoi nay la lao nien');

End;

Readln;

End.

III BÀI TẬP

Bài 1 Giải phương trình bậc hai PTBII

Viết chương trình giải phương trình bậc hai: ax2 + bx + c = 0, a≠0

Trang 17

N K T H

Bài 2 Tính số giây GIAY

Viết chương trình nhập vào từ bàn phím: giờ, phút, giây Cộng thêm một số giây cũng được nhập từ bàn phím Hãy in ra kết quả sau khi cộng xong

Vd: nhập vào 08:30:20 và 80 xuất ra 08:31:40

Bài 3 Tìm max – min MAXMIN

Viết chương trình tìm Max, Min của 4 số: a, b, c, d

Ví dụ: nhập 3 5 8 2 xuất ra Max=8 Min=2

Bài 4 Tìm ngày tháng NGAYTHANG

Viết chương trình nhập vào ngày, tháng, năm, máy sẽ hiện lên ngày, tháng, năm của ngày hôm sau

Ví dụ: nhập vào 24/08/2012 xuất ra 25/08/2012

Bài 5 Màu ô

Bàn cờ vua kích thước 8*8 gồm 64 ô đen trắng xen kẽ nhau Ô

(i, j) là ô ở hàng i, cột j Biết ô đầu tiên có tọa độ (1, 1) mang

màu trắng Nhập tọa độ một ô bất kỳ trong bàn cờ vua, cho biết

ô đó có màu gì? (trắng hay đen)

Input: 2 số nguyên dương x, y là tọa độ ô cần xét.

Output: kết luận về màu của ô (x, y)

Nhap toa do o thu nhat: 1 3

Nhap toa do o thu hai 1 4

Hai o khong trung mau

Bài 7 Kiểm tra tam giác

Nhập vào độ dài 3 cạnh a, b, c Cho biết 3 cạnh đó có lập thành 1 tam giác hay không?

Ví dụ:

Nhap 3 canh a, b, c: 3 4 5

3 canh co the tao thanh tam giac

Bài 8 Loại tam giác

Nhập 3 cạnh tam giác Cho biết đó là tam giác gì? Tam giác cân, tam giác đều, tam giác vuông cân, tam giác vuông, tam giác cân, tam giác thường hay không phải là tam giác

Ví dụ:

Nhap 3 canh tam giac: 3 4 5

Day la tam giac vuong

Bài 9 Tính tiền điện

Trang 18

Tính tiền điện của một hộ gia đình khi cho biết chỉ số điện kế tháng này và chỉ số điện

kế tháng trước Từ đó tính ra KW tiêu thụ Tiền điện được tính như sau:

Từ KW số <= 60: 1000 đ/KW, từ số 61 – 120: 1200 đ/ KW, từ số 121 – 300: 2000 đ/

KW, > 300: 4000 đ/kW

Ví dụ:

Nhap chi so dien ke thang nay: 750

Nhap chi so dien ke thang truong: 300

So tien la: 1092000 dong.

Delta<0: Phương trình vô nghiệm

Delta=0: Phương trình có nghiệm kép: x = -b/(2*a)

Delta>0: Phương trình có 2 nghiệm phân biệt:

x1,2 = (-b±SQRT(Delta))/(2*a)

Bài 2 Tính số giây GIAY

- Gọi số giây được cộng thêm là: ss Gán giây:=giây+ss

- Nếu giây≥60 thì: phút:=phút + giây DIV 60 và giây:=giây MOD 60

- Nếu phút≥60 thì: giờ:=giờ + phút DIV 60 và phút:=phút MOD 60

Bài 3 Tìm ngày tháng NGAYTHANG

Biện luận theo tháng Gom tháng thành 3 nhóm: tháng có 31 ngày (1,3,5,7,8,10,12), tháng có 30 ngày (4,6,9,11) và tháng 2 (có 28 hoặc 29 ngày tùy theo năm nhuận).Dùng lệnh lựa chọn:

 số k nếu có sẽ là phần nguyên của sqrt(2*n)

vây Ta sẽ tìm k = trunc(sqrt(2*n), sau đó thử lại xem 2*n có bằng k*(k+1) hay không?

Trang 19

N K T H

FOR <biến đếm>:=<giá trị Max> DOWNTO <giá trị Min> DO S;

Sơ đồ thực hiện vòng lặp FOR:

Chú ý: Khi sử dụng câu lệnh lặp FOR cần chú ý các điểm sau:

- Không nên tuỳ tiện thay đổi giá trị của biến đếm bên trong vòng lặp FOR

vì làm như vậy có thể sẽ không kiểm soát được biến đếm

- Giá trị Max và Min trong câu lệnh FOR sẽ được xác định ngay khi vào đầu vòng lặp Do đó cho dù trong vòng lặp ta có thay đổi giá trị của nó thì số lần lặp cũng không thay đổi

Dạng REPEAT: Lặp lại công việc S cho đến khi biểu thức B=TRUE thì dừng.

Dạng WHILE: Trong khi biểu thức B=TRUE thì tiếp tục thực hiện công việc S.

Trang 21

N K T H

Write('Nhap vao mot so nguyen N= '); Readln(N);

If N MOD 2 = 0 Then dem:=dem+1;

Trang 22

Viết chương trình nhập vào số nguyên N In ra màn hình tất cả các ước số của N.

Ý tưởng : Cho biến i chạy từ 1 tới N Nếu N MOD i=0 thì viết i ra màn hình

Ví dụ 6 Ước chung lớn nhất và bội chung nhỏ nhất UOCBOI

Viết chương trình tìm USCLN và BSCNN của 2 số a, b được nhập vào từ bàn phím

Ý tưởng :

- Tìm USCLN: Lấy số lớn trừ số nhỏ cho đến khi a=b thì dừng Lúc đó: USCLN=a

- BSCNN(a,b) = a*b DIV USCLN(a,b)

Trang 23

N K T H

Writeln('BSCNN= ',a*b DIV aa);

Ứng với mỗi bộ abc, ta sẽ kiểm tra: Nếu 100.a + 10.b + c = a3 + b3 + c3 thì in ra

Ví dụ 8 Kiểm tra nguyên tố NGUYENTO

Viết chương trình nhập vào số tự nhiên N rồi thông báo lên màn hình số đó có phải là

số nguyên tố hay không

For i:=2 To N div 2 Do

If N MOD i=0 Then d:=d+1;

Trang 24

Cho 2 tệp văn bản NGUYEN1.INP và NGUYEN2.INP, mỗi dòng của 2 tệp chứa một

số số nguyên Hãy lập trình tạo tệp văn bản NGUYEN12.OUT, những dòng đầu tiên là các dòng của tệp NGUYEN1.INP, những dòng còn lại là của tệp NGUYEN2.INP

Ví dụ

NGUYEN1.INP NGUYEN2.INP NGUYEN12.OUT

1 3 5

2

5 2 4

Ý tưởng

Vì không biết tệp có bao nhiều giá trị, ta Sử dụng hàm eof kết hợp với câu lệnh while

để đọc từng giá trị Mỗi lần đọc lưu vào biến temp và ghi ngay temp ra tệp NGUYEN12.OUT Sau khi đọc xong tệp NGUYEN1.INP ta đọc tiếp NGUYEN2.INP

assign(fi1,'nguyen1.inp');reset(fi1); //doc file 1 va xuat ra

while not eof(fi1) do

assign(fi2,'nguyen2.inp');reset(fi2); //doc file 1 va xuat ra

while not eof(fi2) do

Bài 1 Bảng mã Ascii ASCII

Viết chương trình in ra màn hình các giá trị của bảng mã ASCII từ 0→255

Bài 2 In số INSO

Viết chương trình in ra màn hình các số nguyên từ 1 đến 100 mỗi 10 số trên một dòng

Bài 3 In bảng cửu chương CUUCHUONG

Viết chương trình in ra màn hình bảng cữu chương

Bài 4 Tính các tổng CACTONG

Viết chương trình tính các tổng sau:

S0 = n! = 1*2* *n {n giai thừa}

S1 = 1 + 1/2 + + 1/n

Trang 25

N K T H

Viết chương trình để tìm lời giải cho bài toán sau:

Trong giỏ vừa thỏ vừa gà,Một trăm cái cẳng bốn ba cái đầu

Hỏi có mấy gà mấy thỏ?

Bài 6 Đếm trâu DEMTRAU

Viết chương trình để tìm lời giải cho bài toán sau:

Trăm trâu trăm bó cỏ

Bó lại cho trònTrâu đứng ăn nămTrâu nằm ăn baNăm trâu nghé ăn một

Hỏi có bao nhiêu trâu đứng, trâu nằm, trâu nghé?

Bài 7 Chẵn lẻ CHANLE

Viết chương trình nhập vào các số nguyên từ bàn phím cho đến khi nào gặp số nguyên

tố thì kết thúc nhập Tính tổng các số chẵn và trung bình cộng các số lẻ

Bài 8 Chữ số CHUSO

Viết chương trình nhập vào một số nguyên dương Hãy thông báo lên màn hình số đó

có bao nhiêu chữ số và tổng các chữ số của số đó

Ví dụ: nhập vào n = 1234 xuất ra 4 10

Bài 9 In số nguyên tố INNT

Viết chương trình in ra màn hình tất cả các số nguyên tố từ 2 đến N Với N được nhập

từ bàn phím

Ví dụ: nhập N = 10 thì sẽ in ra : 2 3 5 7

Bài 10 Phân tích thừa số nguyên tố TSNT

Viết chương trình mô tả quá trình phân tích một số ra thừa số nguyên tố Ví dụ: N=100

Trang 26

Bài 12 In bảng xoắn ốc XOANOC

Viết chương trình in ra các số nguyên từ 1 đến N2 theo hình xoắn ốc với N được nhập vào từ bàn phím Ví dụ, với N=5 ta có:

Bài 1 Bảng mã Ascii ASCII

Cho biến i chạy từ 0 → 255 In ra màn hình i và CHR(i)

Bài 2 In số INSO

Cho biến i chạy từ 1 → 100 In ra màn hình i và kiểm tra: nếu i MOD 10=0 thì WRITELN

Bài 3 In bảng cửu chương CUUCHUONG

Dùng 2 vòng lặp FOR lồng nhau: i là số bảng cữu chương (2 9), j là số thứ tự trong từng bảng cửu chương (1 10)

Bài 6 Số hoàn thiện HOANTHIEN

Tính tổng các ước số của N: từ 1 → N div 2 lưu vào biến S

Nếu S=N thì N là số hoàn thiện

Trang 27

N K T H

Cú pháp khai báo trực tiếp:

VAR TenBienMang : ARRAY[CSDau CSCuoi] OF KieuPhanTu;

CSDau CSCuoi dùng để xác định miền chỉ số của mảng, cũng là để xác định

số phần tử của mảng Csdau và cscuoi thường là kiểu số nguyên, csdau thường bắt đầu

từ 1

Ví dụ: khai báo mảng có 7 phần tử để lưu trữ 7 số nguyên

VAR t:ARRAY[1 7] OF LongInt;

Ngoài cách trên ta còn có cách khai báo gián tiếp như sau:

TYPE TenKieuMang = ARRAY[CSDau CSCuoi] OF KieuPhanTu;

VAR TenBienMang:TenKieuMang;

Ví dụ: khai báo mảng trên theo cách gián tiếp

TYPE M1C = ARRAY[1 7] OF Longint;

Thủ tục xáo trộn bộ số ngẫu nhiên : Randomize;

Hàm tạo ra số ngẫu nhiên trong khoảng [0,k): Random(k);

Trang 28

Ví dụ 1 Nhiệt độ trong tuần NHIETDO

Nhập nhiệt độ mỗi ngày trong tuần, tính nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình

FOR i:=1 TO 7 DO read(fi, t[i]);

Để tính trung bình, ta tính tổng nhiệt độ 7 ngày trước Ta dùng vòng lặp duyệt qua các phần tử trong mảng và cộng dồn vào biến S

FOR i:=1 TO 7 DO s:=s+t[i];

Để điếm số ngày thỏa đề bài, ta cũng dùng vòng lặp duyệt qua các phần tử trong mảng Phần tử nào thỏa điều kiện thì tăng dem

FOR i:=1 TO 7 DO

IF nhietdo[i] > tb THEN inc(d);

Chương trình

PROGRAM nhietdotrungbinh;

Trang 29

N K T H

IF nhietdo[i] > tb THEN inc(d);

{Xuat ket qua}

Const

Fin=’SAPXEP.INP’;

Fon=’SAPXEP.OUT’;

Maxn = 1000;

Trang 30

Tạo mảng Ngẫu nhiên

Đề bài yêu cầu tạo mảng số ngẫu nhiên chứ không phải đọc từ tệp cho trước Các số ngẫu nhiên này do máy sinh ra và ta không biết trước giá trị Việc tạo số ngẫu nhiên giống như trò chơi “Lô tô” Đầu tiên ta phải làm thao tác “xóc túi” để xáo trộn các con

số bằng thủ tục xáo trộn bộ số ngẫu nhiên : Randomize; Thao tác này chỉ cần làm

một lần trong chương trình

Sau khi xáo trộn, khi nào cần tạo ra một giá trị ngẫu nhiên ta sử dụng hàm tạo giá trị ngẫu nhiên Random(k:word): word Hàm này sẽ cho ta một giá trị ngẫu nhiên thuộc

[0, k)

Để tạo ra mảng gồm n giá trị ngẫu nhiên, ta sẽ thực hiện n lần, mỗi lần tạo một giá trị

và lưu vào một phần tử của mảng a

Để tạo một giá trị ngẫu nhiên từ -1000 1000, ta có nhiều cách Ví dụ: -1000 + random(2000); hoặc random(1000) – random(1000);

Read(fi, n);

Randomize;

For i:=1 to n do a[i]:=-1000+random(2000);

Sau khi tạo xong ta có thể xuất mảng a để xem giá trị :

For i:=1 to n do write(fo,a[i],’ ‘);

Sắp xếp mảng: có nhiều thuật toán khác nhau để sắp xếp mảng tăng dần, ta có thể sử

dụng thuật toán “nổi bọt” như sau:

Ý tưởng: so sánh từng cặp 2 phần tử kề nhau, nếu sai vị trí thì đảo lại.

Lần 1: duyệt từ phần từ 1 đến phần tử n-1, nếu a[i]>a[i+1] thì đảo lại Sau lần này ta

được phần tử lớn nhất “nổi” về đúng vị trí (cuối cùng) n

Lần 2: duyệt từ phần tử 1 đến phần tử n-2, nếu a[i]>a[i+1] thì đảo lại Sau lần này ta

được phần tử lớn nhì“nổi” về đúng vị trí (kế cuối) n-1

Lần n-1: duyệt từ phần tử 1 đến phần tử n - (n-1) nếu a[i]>a[i+1] thì đảo lại Sau lần

này ta được phần tử lớn thứ n-1 “nổi” về đúng vị trí (thứ 2)

Trang 31

N K T H

For i:=1 to n do a[i]:=-1000+random(2000);

{Xuat mang chua sap xep}

For i:=1 to n do write(fo,a[i],' ');

{Sap xep mang}

Cac gia tri chan: 2 4 2

Bài 2 Nhập xuất mảng bằng tệp NHAPMANG2

Cho 2 số n, k và mảng a gồm n phần tử nguyên a1, a2, …, an Tìm các phần tử có giá trị bằng ak

Trang 32

a2 a5 a7

Bài 3 Duyệt mảng DUYET

Nhập số n, k và mảng a gồm n phần tử nguyên a1, a2, …, an Tính

Bài 4 Xếp gạch XEPGACH

Minh rất thíc trò chơi xếp các chiếc hộp có hình viên gạch Minh đặt các viên gạch chồng lên nhau và xây thành nhiều chồng có độ cao khác nhau Minh khoe với chị rằng “Chị trông, em đã xây được một bức tường” Chị Minh trả lời: “Em phải xếp các viên gạch có độ cao giống nhau mới được gọi là một bức tường” Sau khi nghe chị nó như vậy, nó cân nhắc một tí và cho rằng ý kiến đó là đúng Vì vậy em bắt đầu tiến hành sắp xếp lại các chồng gạch lần lượt từng chiếc một cho đến khi hoàn thành công việc Khi công việc đã hoàn tất Minh mệt lả và muốn có bạn nào giúp Minh di chuyển các viên gạch với số lần ít nhất

Yêu cầu:Hãy lập trình đưa ra số lần di chuyển ít nhất của các viên gạch sao cho từ các

chồng gạch có độ cao khác nhau trở thành các chồng gạch có độ cao bằng nhau; lần lượt từng viên một cho đến khi hoàn thành công việc

Dữ liệu vào: cho trong file XEPGACH.INP

Trang 33

N K T H

• Dòng đầu tiên là số chồng gạch n (1<=n<=50)

• Dòng tiếp theo lần lượt là các số nguyên hi, độ cao của chồng gạch thứ i (1<=hi<=100, I = 1 n)

Dữ liệu ra: xuất kết quả ra file XEPGACH.OUT

• Một số nguyên dương duy nhất là số lần di chuyển các viên gạch ít nhất Nếu không thể xếp được thì ghi -1

Bài 5 Chia mảng CHIAMANG

Tìm cách chia dãy số nguyên không âm a1, a2, ,an, n > 1 cho trước thành hai đoạn có tổng các phần tử trong mỗi đoạn bằng nhau

Bài 6 Kiểm tra mảng tăng dần

Cho n và dãy số nguyên a1, a2, …, an Kiểm tra dãy số có phải là dãy tăng dần không?

Bài 7 Tìm min – max MINMAX

Cho dãy a có n số ngyên Tìm giá trị lớn nhất và nhỏ nhất của dãy

Input

- Dòng đầu là số n (n<1000)

Trang 34

Bài 8 Đổi chỗ Min Max

Nhập mảng a có n phần tử nguyên dương Viết chương trình đổi chỗ 2 phần tử lớn nhất và nhỏ nhất cho nhau Nếu có nhiều phần tử lớn nhất và nhỏ nhất thì đổi chỗ phần

tử lớn có chỉ số lớn nhất và phần tử nhỏ nhất có chỉ số lớn nhất

4 3 3 4 5 6 8 6 8 4 9 8 4 5 6 9 6 8

Bài 9 Tích lớn nhất TICHMAX

(Đề thi tuyển sinh lớp chuyên Tin trường phổ thông năng khiếu 2007)

Cho một dãy gồm N số nguyên Hãy tìm 3 số trong dãy với tích T của chúng là lớn nhất

Dữ liệu: Vào từ file văn bản TICHMAX.INP:

• Dòng đầu ghi số N (3≤N≤10000).

• Dòng thứ hai chứa N số nguyên có giá trị tuyệt đối không vượt quá 30000

Kết quả: Ghi ra file văn bản TICHMAX.OUT một số duy nhất T.

Ví dụ:

Bài 10 Hệ thống đèn màu DEN

Đề thi tin học trẻ Quốc Gia 2009

9

3 5 1 7 9 0 9 -3 10

810

Trang 35

N K T H

Có n đèn, mỗi đèn được đánh thứ tự từ 1 -> n Các đèn có khả năng sáng màu xanh hoặc đỏ Ban Tổ chức có quy luật đổi màu như sau:

Ban đầu tất cả đều sáng màu xanh Sau chương trình thứ 1, các đèn có số thứ tự chia hết cho 2 sẽ đổi màu Sau chương trình thứ k, các đèn có số thứ tự chia hết cho k+1

sẽ đổi màu (xanh thành đỏ và đỏ thành xanh)

Yêu cầu: Cho trước n và k, đếm xem có bao nhiêu đèn màu đỏ khi kết thúc k chương

IV HƯỚNG DẪN GIẢI

Bài 4 Xếp gạch XEPGACH

Tìm số viên gạch cao hơn chiều cao trung bình (hoặc thấp hơn chiều cao trung bình)

Bài 5 Chia mảng CHIAMANG

Kí hiệu sum(a[d c]) = a[d] + a[d +1]+ + a[c].

Gọi t là tổng các phần tử của mảng: t = sum(a[1 n])

Muốn chia a thành hai đoạn a[1 i] và a[i+1 n] có tổng bằng nhau ta phải có:

1 t là số chẵn (t chia hết cho 2) Đặt t2 = t div 2.

Trang 36

• Ba số dương: ba số này phải lần lượt là số lớn nhất, nhì, ba trong dãy

• Một số âm và hai số dương: dãy phải gồm đúng hai số dương, vì nếu không ta

có thể lấy tích ba số dương để đạt giá trị lớn hơn Ta cũng suy ra ba số này phải

ba số cần tìm phải là ba số lớn nhất, nhì, ba của dãy

Vậy suy ra, T=max(max1*max2*max3,min1*min2*max1), với max1, max2, max3, min1, min2 lần lượt là số lớn nhất, nhì, ba và số nhỏ nhất, nhì của dãy

Bài 12 Bài 13 Hệ thống đèn màu DEN

Lưu trạng thái các đèn vào us[], us[x] =0 tức đèn x đang xanh, ngược lại us[x]=1 là đèn đang đỏ

Duyệt qua từng chương trình, chương trình thứ i, bắt đầu từ đèn thứ i+1, cứ cách i+1 đèn là có đèn đổi màu ta cập nhật lại trạng thái đèn Để thuận tiện ta cho i chạy từ 1 đến k+1

Ngày đăng: 20/07/2016, 20:26

HÌNH ẢNH LIÊN QUAN

Sơ đồ khối - Lý thuyết và bài tập pascal bậc thcs
Sơ đồ kh ối (Trang 4)
Sơ đồ thực hiện: - Lý thuyết và bài tập pascal bậc thcs
Sơ đồ th ực hiện: (Trang 15)
Sơ đồ thực hiện vòng lặp FOR: - Lý thuyết và bài tập pascal bậc thcs
Sơ đồ th ực hiện vòng lặp FOR: (Trang 19)
Bài 1. Bảng mã Ascii ASCII - Lý thuyết và bài tập pascal bậc thcs
i 1. Bảng mã Ascii ASCII (Trang 24)
Số trong bảng có giá trị tuyệt đối không vượt quá 30000. Bảng B được tạo ra từ bảng A  theo qui tắc sau: - Lý thuyết và bài tập pascal bậc thcs
trong bảng có giá trị tuyệt đối không vượt quá 30000. Bảng B được tạo ra từ bảng A theo qui tắc sau: (Trang 46)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w