1. Trang chủ
  2. » Trung học cơ sở - phổ thông

Bài tập thực hành tin học tự chọn lớp 8

24 5,1K 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 24
Dung lượng 267,83 KB

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

Nội dung

Câu lệnh 4: Thực hiện tính giá trị biểu thức bên phải dấu gán được giá trị 2, lấy giá trị đó gán cho biến x giá trị của x là 2 Câu lệnh 5: Thực hiện tính giá trị biểu thức bên phải dấu g

Trang 1

Bài tập thực hành Tin Học tự chọn lớp 8

I Các kiểu dữ liệu và phép toán

1 Kiểu số nguyên

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

Tên kiểu Phạm vi giá trị Số byte Giải thích

ShortInt -128 127 1 1 bit chứa dấu, 7 bit chứa giá trị

Integer -32768 32767 2 1 bit chứa dấu, 15 bit chứa giá trịWord 0 65535 2 16 bit chứa giá trị

LongInt -2147483648

2147483647

4 1 bit chứa dấu, 31 chứa giá trị

1.2 Các phép toán

Các phép toán số + (cộng), - (trừ), x (nhân), div (chia +, -, *, div, mod

Có cấu trúc

Chuẩn

Do người dùng định nghĩa

Mô tả sẵn

Do người dùng định nghĩa

Logic (boolean)

Ký tự (char)Nguyên (integer)Thực (real)

Liệt kê (enumerate)Đoạn con (sub range)

Xâu ký tự (string)Mảng (array)Tập hợp (set of)Bản ghi (record)Tệp (file)

Ngăn xếp (stack)Hàng đợi (queue)Danh sách (list)Cây (tree)

Trang 2

học với số nguyên nguyên), mod (lấy phần dư)

2 Kiểu số thực

2.1 Kiểu Real và các kiểu mở rộng

Kiểu Real là kiểu số thực thông dụng nhất dùng để biểu diễn các số thực x có trị tuyệtđối |x| nằm trong khoảng từ 2.9*10-39 đến 1.7*10+38 Nếu |x| > 1.7*10+38 thì không biểudiễn x trong máy được, còn nếu | x| < 2.9*10-39 thì x được coi là bằng 0

Có hai cách biểu diễn các số thực:

- Cách 1 (Biểu diễn dưới dạng dấu phẩy tỉnh): Viết bình thường, trong đó dấu phẩythập phân được thay bằng dấu chấm thập phân, ví dụ như: 18.6 có nghĩa là 18,6

- Cách 2 (Biểu diễn dưới dạng dấu phẩy động):

1.257E+01 (có giá trị = 1.257*101 = 12.57 )

1257.0E-02 (có giá trị = 1257*10-2 = 12.57 )

Trong dạng này số gồm có hai phần, phần đứng trước E gọi là phần định trị, được viếttheo cách 1, phần đứng sau E gọi là phần bậc, gồm dấu cộng hoặc trừ, tiếp đến là một sốnguyên

Số viết theo cách 1 còn gọi là số có dấu chấm thập phân cố định, số viết theo cách 2còn gọi là số có dấu chấm thập phân di động hay số dạng khoa học (Scientific)

Tên kiểu Phạm vi giá trị Số byteReal 2.9*10-39 1.7*1038 6Single 1.5*10-45 3.4*1038 4Double 5.0*10-324 1.7*10308 8Extended 3.4*10-4932 1.1*104932 10Comp -9.2*1018 9.2*1018 8

Chú ý: Turbo Pascal thường chỉ làm việc với một kiểu Real Muốn dùng 4 kiểu thực còn lại, phải chuyển sang mode 8087 bằng cách viết chỉ thị {$N+} ở ngay đầu chương trình.

Trang 3

4) x:=x+1; {Tăng giá trị của biến x lên 1 đơn vị ≈ thủ tục Inc(x)}

5) y:=y-1; {Giảm giá trị của biến y xuống 1 đơn vị ≈ thủ tục Dec(y)}

6) x:=x+y+z;

7) y:=y+z-x;

8) z:=x+y-z;

Giải thích ý nghĩa khi thực hiện các câu lệnh:

Câu lệnh 1, 2, 3: Thực hiện gán giá trị 1, 2, 3 cho các biến tương ứng là x, y, z (giá trị của x là 1, giá trị của y là 2, giá trị của z là 3).

Câu lệnh 4: Thực hiện tính giá trị biểu thức bên phải dấu gán được giá trị 2, lấy giá trị

đó gán cho biến x (giá trị của x là 2)

Câu lệnh 5: Thực hiện tính giá trị biểu thức bên phải dấu gán được giá trị 1, lấy giá trị

đó gán cho biến y (giá trị của y là 1)

Câu lệnh 6: Thực hiện tính giá trị biểu thức bên phải dấu gán được giá trị 6, lấy giá trị

đó gán cho biến x (giá trị của x là 6)

Câu lệnh 7: Thực hiện tính giá trị biểu thức bên phải dấu gán được giá trị -2, lấy giá

trị đó gán cho biến y (giá trị của y là -2)

Câu lệnh 8: Thực hiện tính giá trị biểu thức bên phải dấu gán được giá trị 1, lấy giá trị

đó gán cho biến z (giá trị của z là 1)

Trả lời: Sau khi thực hiện các câu lệnh gán trên thì giá trị của x là 6,giá trị của y là -2,giá trị của z là 1

Chú ý:

- Khi gán giá trị phải đảm bảo tính tương thích giữa kiểu dữ liệu và giá trị gán, ví

dụ khai báo biến x kiểu Integer thì không thể gán nó cho giá trị 6.5.

- Trong câu lệnh gán có một ngoại lệ đó là biến kiểu thực có thể nhận giá trị nguyên.

III Hạn chế nhận giá trị cho một biến:

Trang 5

- Việc giải quyết bài toán phức tạp thường bao gồm nhiều giai đoạn Mỗi giai đoạngiải quyết một bài toán con đơn giản hơn Do vậy cần phân chương trình thành các khối,mỗi khối bao gồm các lệnh giải quyết một bài toán con nào đó Các khối lệnh sẽ đượcxây dựng thành các chương trình con Sau đó chương trình sẽ được xây dựng nên từ cácchương trình con này.

- Làm chương trình dễ đọc dễ hiểu, dễ kiểm tra để phát hiện ra lỗi và sửa sai

- Có thể nhiều người cùng viết một chương trình Mỗi người viết một chương trìnhcon rồi sau đó lắp ghép lại

- Việc sử dụng chương trình con tránh phải viết lặp đi lặp lại cùng một nhóm lệnhnào đó

- Có hai loại chương trình con: Thủ tục (Procedure) và Hàm (Function)

2.2 Vị trí của thủ tục trong chương trình

Trong chương trình có sử dụng thủ tục thì các thủ tục phải được mô tả trước trongphần khai báo của chương trình, sau phần khai báo biến

Trang 6

các hình vuông có cạnh khác nhau, ta đưa vào thủ tục một tham số Canh.Tham số Canh

được đưa vào đầu thủ tục

Trang 7

- Khi gọi thủ tục, một tham số hình thức thuộc loại tham số giá trị có thể được thaythế bởi biểu thức có cùng kiểu dữ liệu với tham số đó Trong ví dụ trên, Canh là tham sốthuộc kiểu Integer và X là một biến thuộc kiểu Integer, khi đó các lời gọi thủ tục sau đâyđều hợp lệ:

Ve_hv(3);

Ve_hv(X);

Ve_hv(3*X+2);

Trong các lời gọi thủ tục trên, hằng nguyên 3, biến nguyên X, biểu thức nguyên

3*X+2 được gọi là tham số thực sự Trong lời gọi thứ nhất tham số Canh được thay thế bởi giá trị hằng 3; trong lời gọi thứ hai tham số Canh được thay thế bởi giá trị của biến X; trong lời gọi thứ ba tham số Canh được thay thế bởi giá trị của biểu thức 3*X+2.

- Khi gọi thủ tục, các tham số hình thức được thay thế bởi các tham số thực sự.

2.4.2 Tham số biến

Trong thủ tục, ngoài việc sử dụng các tham số giá trị ta còn có thể sử dụng các tham

số biến Khi gọi thủ tục, các tham số biến chỉ được phép thay thế bằng các biến (tham số thực sự) Các biến này chịu mọi sự biến đổi trong thủ tục và giữ lại mọi biến đổi chúng

trong quá trình thực hiện thủ tục

Ví dụ 6: Chương trình tráo đổi giá trị của 2 biến:

Trang 8

Trong thủ tục Trao_doi ở chương trình trên, biễu diễn Var x,y:Integer chỉ rằng x và y

là hai tham số biến kiểu nguyên Xét lời gọi thủ tục Trao_doi(a,b) Trong lời gọi này, cáctham số biến x và y được thay thế bởi các biến nguyên trương ứng là a và b Các biến nàychịu sự biến đổi trong thủ tục, cụ thể là: tg:=a; a:=b; b:=tg; do vậy, sau khi thực hiện thủtục Trao_doi(a,b), biến a sẽ nhận giá trị của biến b và biến b nhận giá trị của biến a

Để nhận biết sự khác nhau giữa tham số biến và tham số giá trị, xét chương trình sau:

Trang 9

là mọi thao tác đối với z trong thủ tục bây giờ sẽ xẩy ra đối với x, cụ thể là lệnh gán z:=1

sẽ gán 1 cho biến x Còn khi thay tham số giá trị w bởi biến y trong lời gọi Thay_doi(x,y)

thì giá trị của biến y được sao chép sang cho biến w Tức là w có giá trị 0 (vì y có giá trị 0) Khi bước vào thân thủ tục không có một liên quan nào nữa giữa biến y và biến w, vì vậy lệnh gán w:=1 không ảnh hưởng gì đến giá trị của y (giá trị của y vẫn là 0) Như vậy

giá trị của x được in ra là 1, còn của y là 0

Trong mọi thủ tục có thể đưa vào các tham số hình thức được đặt sau tên thủ tục và trong cặp dấu ngoặc tròn Có hai loại tham số hình thức: Tham số giá trị và tham số biến Các tham số có từ khóa Var đứng trước là tham số biến, còn không có từ khóa Var đứng trước là tham số giá trị Các tham số cùng kiểu và cùng loại ngăn cách nhau bởi dấu phẩy, còn các nhóm tham số khác kiểu hoặc khác loại được ngăn cách nhau bởi dấu chấm phẩy Mỗi tham số phải được khai báo một kiểu dữ liệu Khi cần tham số ghi giữ lại những biến đổi trong thủ tục thì tham số phải được khai báo là tham số biến.

Ví dụ: Xét đầu thủ tục

Procedure Beta(Var a,b:Real;c,d:Real;i,j:Integer);

Trong thủ tục trên a và b là các tham số biến có kiểu thực, c và d là các tham số giá trị cókiểu thực, i và j là các tham số giá trị có kiểu nguyên

Trong lời gọi thủ tục, các tham số giá trị được thay thế bởi giá trị các biểu thức cùng kiểu (trường hợp riêng của biểu thức là hằng và biến), các tham số biến chỉ được phép thay thế các biến cùng kiểu; sự thay thế phải theo đúng trật tự các tham số đã khai báo trong đầu thủ tục.

Ví dụ: Xét đầu thủ tục

Procedure Gama(Var x:Integer; y:Integer);

Với a là biến nguyên, khi đó các lời gọi sau là hợp lệ

Ví dụ: Không được viết: Procedure Delta(x:Array[1 10] of Integer);

Muốn khai báo tham số x có kiểu mảng như ở trên ta phải xác định trước kiểu MangType Mang=Array[1 10] Of Integer;

Rồi sau đó mới viết

Trang 10

Cách viết đầu hàm:

Function Tên _hàm(Danh_sách_tham_số:Tên_kiểu_tham_số):Tên_kiểu_của_hàm;

Chú ý rằng kiểu kết quả của hàm (kiểu của hàm) chỉ có thể là các kiểu: Integer, Real,Char, Boolean, String

Ngoài đầu của hàm, hàm có cấu trúc hoàn toàn giống như thủ tục Một điều quan trọng làtrong thân của hàm phải có ít nhất một câu lệnh gán để gán giá trị cho tên hàm

Trang 11

chỉ có thể nằm trong một biểu thức nào đó Trong chương trình trên, câu lệnh có lời gọihàm chính là câu lệnh gán (hàm xuất hiện trong biểu thức bên phải của câu lệnh):

a:=Ucln(tu,mau) Vế phải câu lệnh gán này là lời gọi hàm Ucln(tu,mau); chương trìnhtính ước chung lớn nhất của tu và mau để gán cho biến a Lời gọi hàm có thể là thànhphần của các biểu thức Chẳng hạn có thể viết: 5*Ucln(12,8)+3

4 Biến cục bộ và biến toàn bộ

Ngoài các tham số, có thể khai báo các biến được sử dụng trong chương trình con.Các biến được khai báo trong chương trình con nào chỉ có tác dụng trong chương trìnhcon đó, ngoài ra nó không xác định và do vậy không ảnh hưởng tới bất kỳ nơi nào kháctrong chương trình Vì vậy các biến này được gọi là các biến cục bộ Các biến được khaibáo trong phần khai báo của chương trình được sử dụng trong toàn bộ chương trình, kể cảtrong các chương trình con có trong chương trình Do đó các biến này được gọi là cácbiến toàn bộ

Ví dụ 9: Chương trình giản ước phân số

Trang 12

Các biến x,y,du là các biến cục bộ, chúng chỉ được sử dụng trong thủ tục Gups Thủtục Gups thực hiện công việc sau: Đầu tiên các biến x, y nhận các giá trị của tu và mau(các lệnh gán x:=tu; y:=mau) Vòng lặp While sẽ tính ước chung lớn nhất cua tu và maudùng để giản ước Chương trình nhận các giá trị tu và mau từ bàn phím, sau đó gọi thủtục Gups, rồi in các giá trị của tu và mau sau khi gian uoc.

Sự thay đổi của bộ nhớ trong quá trình thực hiện chương trình được minh họa nhưsau:

duyx

Hình c) biểu diễn không gian nhớ sau khi thủ tục đã được thực hiện

Như vậy các biến cục bộ chỉ tồn tại trong thời gian thực hiện thủ tục

Để thấy rõ sự khác nhau giữa biến cục bộ và biến toàn cục, xét hai chương trình quahai ví dụ sau đây:

Trang 13

Chương trình này chỉ có một biến x – nó là biến toàn bộ Trong chương trình chính,đầu tiên x có giá trị bằng 0 (lệnh gán x:=0) Chương trình gọi thủ tục Thay_doi làm thayđổi giá trị của x thành 1 và giá trị này được in ra bởi lệnh cuối cùng trong chương trình

là biến.

- Gọi thủ tục (hàm) bằng tên của thủ tục (hàm).

- Biến được khai báo trong chương trình con là biến cục bộ Biến được khai báo ở chương trình chính là biến toàn bộ

V Một số câu lệnh kết thúc sớm vòng lặp hoặc chương trình

1 Lệnh nhảy không điều kiện (Goto): là câu lệnh nhảy không điều kiện, cho phép

nhảy từ bất kì nơi nào bên trong chương trình hay chương trình con đến vị trí đã đánh dấubằng nhãn Nhãn là một tên, như tên biến hoặc là một số nguyên, sử dụng như sau:

Cú pháp: Goto nhãn;

Trang 14

3) Viết câu lệnh: Goto nhãn;

* Chú ý với lệnh nhảy vô điều kiện Goto:

- Có thể nhảy từ trong vòng lặp ra ngoài,

- Không cho phép nhảy từ ngoài vào trong vòng lặp, từ ngoài vào trong chương trìnhcon

- Nên hạn chế dùng câu lệnh nhảy vô điều kiện Goto vì nó phá vỡ tính cấu trúc của câulệnh điều khiển, khó theo dõi

Ví dụ 12: Viết chương trình nhập vào một số nguyên n, in ra màn hình số chính phươnglớn nhất mà nhỏ hơn n

Trang 15

For i:=k Downto 1 Do

Sự thực hiện câu lệnh như sau:

- Nếu câu lệnh ở bên trong chương trình con thì sẽ chấm dứt chương trình con (mặc

dù chưa đến câu lệnh cuối) và trở về chương trình bên ngoài đã gọi chương trình con đó

- Nếu câu lệnh ở trong chương trình chính (không ở trong chương trình con nào cả)thì lệnh này chấm dứt chương trình chính và dừng lại

Chú ý: Câu lệnh Exit chỉ nên sử dụng trong các chương trình con.

Ví dụ 14: Chương trình nhập vào số k, kiểm tra số k có phải là số nguyên tố hay không?Program Vidu14;

Trang 16

If lsnt(k) then writeln(k,' la so nguyen to')

Else writeln(k,' khong la so nguyen to');

Readln;

End

4 Lệnh dừng chương trình bất thường (Halt): là lệnh dừng chương trình chính Lệnh

này được sử dụng khi xảy ra lỗi, sai sót nghiêm trọng, việc tiếp tục chương trình là không

VI Vào ra dữ liệu kiểu tệp văn bản

Khai báo: Var Biến_kiểu_tệp:Text;

Trang 17

Dữ liệu vào là tệp văn bản SN.INP có cấu trúc:

- Dòng đầu tiên ghi số nguyên dương N

- Dòng tiếp theo ghi không quá N (1 ≤ N ≤ 128) số nguyên của dãy số A Các sốghi cách nhau ít nhất là một ký tự trống

Dữ liệu ra là tệp văn bản SN.OUT ghi một số duy nhất là tổng các số của dãy số A

Trang 18

có bao nhiêu trại.

Dữ liệu ra là tệp văn bản trai.out ghi một số duy nhất là số lượng trại đếm được

Trang 19

For i:=2 to length(y)-1 do

If (y[i]='*') and (y[i-1]=BL) and (y[i+1]=BL) and (x[i]=BL)

Bài toán được cấu thành bởi hai thành phần cơ bản: Input và Output

Input: Các thông tin đã có

Output: Các thông tin cần tìm từ Input

Thuất toán để giải một bài toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác ấy, từ Input của bài toán ta nhận được Output cần tìm

Ví dụ: Tìm giá trị lớn nhất của một dãy số nguyên

- Xác định bài toán:

Input: Số nguyên dương N và dãy N số nguyên a1, a2, , aN

Output: Giá trị lớn nhất của dãy số

- Ý tưởng:

Trang 20

Khởi tạo giá trị Max=a1.

Lần lượt với i từ 2 đến N, so sánh giá trị số hạng ai với giá trị Max, nếu ai > Max thì Max nhận giá trị mới là ai

- Thuật toán:

B1: Nhập N và dãy số a1, a2, , aN;

B2: Max <- a1, i <- 2;

B3: Nếu i>N thì đưa ra giá trị Max rồi kêt thúc;

B4: Nếu ai > Max thì Max <- ai

i <- i+1 rồi quay lại B3;

Mô tả thuật toán qua ngôn ngữ lập trình Pascal:

Max:=a[1];

For i:=2 to N do

If a[i] > Max Then Max:=a[i];

Writeln(‘Gia tri lon nhat can tim la: ’,Max);

Readln;

II Sắp xếp dữ liệu

1 Khái niệm

Sắp xếp là một quá trình tổ chức lại một dãy các dữ liệu theo một tự nhất định

Mục đích của việc sắp xếp là nhắm giúp cho việc tìm kiếm dữ liệu được dễ dàng vànhanh chóng

2 Thuật toán sắp xếp bằng tráo đổi

2.1 Bài toán:

Input: Dãy A gồm N số nguyên a1, a2, , aN

Output: Dãy A được sắp xếp lại thành dãy không gỉảm (không tăng)

2.2 Ý tưởng: Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước lớn hơn số sau tađổi chổ chúng cho nhau Việc đó lặp đi lặp lại cho đến khi không có sự đổi chổ nào xảy

B6: Nếu i > M thì quay lại B3;

B7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau;

Trang 21

Input: Dãy A gồm N số nguyên a1, a2, , aN và số nguyên k.

Output: Chỉ số i mà ai = k hoặc thông báo không có số hạng của dãy A có giá trị bằng k

Số nguyên k được gọi là khoá tìm kiếm

2.2 Ý tưởng:

Tìm kiếm tuần tự được thực hiện một cách tự nhiên Lần lượt từ số hạng thứ nhất, ta sosánh giá trị số hạng đang xét với khoá k cho đến khi gặp một số hạng bằng khoá k hoặcdãy A đã được xét hết và không có giá trị nào bằng khoá k

While (i<N) and (a[i] <> k) do Inc(i);

If i>N then Writeln(‘Khong co so hang nao co gia tri bang ‘,k)

Else Writeln(‘So hang thu ‘,i,’ co gia tri bang ‘,k);

3 Thuật toán tìm kiếm nhị phân

IV Thuật toán Đệ quy

Ví dụ1: Tính giai thừa của một số tự nhiên biết rằng:

Ngày đăng: 03/07/2015, 21:57

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w