1. Trang chủ >
  2. Công Nghệ Thông Tin >
  3. Tin học văn phòng >

I. Vòng lặp xác định FOR

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 (1.2 MB, 236 trang )


Giáo trình Tin học Đại cơng



KS.Đặng Quang Thanh



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



i:=giá trị đầu



i<=giá trị

cuối



Đ



Công việc



i:=i+1



Công việc



i:=i -1



S



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



i:=giá trị cuối



i >=giá trị

đầu



Đ



S



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.

Thuật toán và sơ đồ

- Bắt đầu

- Nhập số nguyên n

- Trong vòng lặp với i chạy từ 1 đến n, kiểm tra nếu n mod i=0 thì in i ra màn hình



69



Giáo trình Tin học Đại cơng



KS.Đặng Quang Thanh



- Kết thúc



BEGIN



Nhập n



i:=1

i:=i+1

Đ



i<=

n



N mod

i=0



S



Đ



END.



In i



Chơng trình:

Program



Timuocso;



Var

I,n:integer;

Begin

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

For i:=1 to n do

If n mod i=0 then

Write(i:8);

Readln;

End.

Ví dụ 2:Tính tổng bình phơng các số lẻ từ 1 tới n

Bạn đọc tự phân tích và đa ra thuật toán .

Chơng trình:

Program tongbp;

Var

I,n:integer;



70



S



Giáo trình Tin học Đại cơng

Begin



KS.Đặng Quang Thanh



Tong:integer;



Write(' Nhap n=');readln(n);

Tong:=0;

For i:=1 to n do

If odd(i) then

Tong:=tong +sqr(i);

Writeln(' tong lap phuong la :',tong);

Readln;

End.

II. Vòng lặp không xác định (Repeat...Until và While ...Do)

a. Vòng lặp Repeat...Until

Cú pháp:

Repeat

;

Until ;

Hoạt động

Khi gặp vòng lặp này chơng trình sẽ đi thực hiện công việc, sau khi thực hiện xong sẽ

kiểm tra biểu thức logic. Nếu biểu thức logic sai, quay trở về đầu vòng lặp thực hiện công

việc lần thứ hai, sau đó lại kiểm tra biểu thức logic, quá trình tiếp tục cho đến khi biểu thức

logic là đúng thì thoát khỏi vòng lặp.

Sơ đồ thuật toán.



công việc



S



BT logic



Đ



b. Vòng lặp While ...Do

Cú pháp:

While Do

;

Hoạt động:

Khi gặp vòng lặp này chơng trình sẽ kiểm tra biểu thức logic. Nếu biểu thức logic đúng

đi thực hiện công việc, sau khi thực hiện công việc xong quay trở về đầu vòng lặp kiểm tra biểu

thức logic, quá trình tiếp tục cho đến khi biểu thức logic là sai thì thoát khỏi vòng lặp.

Sơ đồ thuật toán:



BT logic



Đ

Công việc



S



71



Giáo trình Tin học Đại cơng



KS.Đặng Quang Thanh



d. Một số ví dụ

Ví dụ 1: Nhập vào một dãy số bất kỳ tính tổng của dãy số đó, việc tính tổng chỉ dừng lại khi

nhập vào một số 0.

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

- Một dãy số bất kỳ ở đây ta không thể xác định đợc số lợng các số hạng của dãy một cách

cụ thể mà chỉ thực hiện công việc nhập từng số hạng của dãy lặp đi lặp lại cho đến khi nhập vào một

số 0 thì dừng lại. Cụ thể nh sau:

- Dùng một biến a để chứa tạm thời giá trị của mỗi số hạng nhập vào

- Mỗi một lần nhập một số thông qua biến a. Cụ thể dùng lệnh

Writeln(Nhap vao a=);Readln(a);

- Sau đó lấy giá trị của số mới nhập cộng thêm giá trị đã có trong biến Tong, kết quả đ a vào

biến Tong. Cụ thể là thực hiện lệnh Tong:=Tong+a;

- Sau khi tính tổng xong đi kiểm tra xem số a nhập vào có bằng không hay không. Nếu a=0

thì kết thúc công việc nhập và tính tổng. Ngợc lại (a<>0) lại thực hiện toàn bộ công việc trên một

lần nữa.

Vậy với bài toán trên ta dùng cấu trúc lặp không xác định cụ thể là vòng lặp Repeat. Nếu

dùng vòng lặp While ..do thì phải kiểm tra a trớc rồi mới tính tổng.

Sơ đồ thuật toán dùng vòng lặp Repeat

BEGIN



tong:=0

Nhập a



Tong:=Tong+a



Đ

a=0



S

In tong



END.



72



Giáo trình Tin học Đại cơng



KS.Đặng Quang Thanh



Chơng trình dùng vòng lặp Repeat

Program Vi_du1;

Var

a,tong:real;

Begin

tong:=0;

Repeat

Write('nhap vao so a=');readln(a);

Tong:=tong+a;

Until a=0;

Writeln('Tong cua day so la:',tong:6:2);

readln

End.

Sơ dồ thuật toán dùng vòng lặp While ..Do

BEGIN



tong:=0

Nhập a



a<>0



Đ



Tong:=Tong+a



S

In tong



END.



Chơng trình dùng vòng lặp While ..Do

Program Vi_du1;

Var

a,tong:real;

Begin

tong:=0;

Write('nhap vao so a=');readln(a);

While a<>0 do

Begin



73



Nhập a



Giáo trình Tin học Đại cơng



KS.Đặng Quang Thanh



Tong:=tong+a;

Write('nhap vao so a=');readln(a);

end;

Writeln('Tong cua day so la:',tong:6:2);

readln

End.

Ví dụ 2: Tìm UCLN của hai số nguyên a và b theo thuật toán.

- Nếu a>b thì thay a=a-b

Ngợc lại b:=b-a. Quá trình đợc lặp lại cho đến khi a= b thì dừng lại.

Bạn đọc tự vẽ sơ đồ

Chơng trình.

Program USCLN;

Var

a,b:integer;

Begin

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

Write(' Nhap vao so b=');readln(b);

While a<>b do

If a>b then

a:=a-b

Else b:=b-a;

Writeln('USCLN la:',a);

Readln

End.



74



Giáo trình Tin học Đại cơng



KS.Đặng Quang Thanh

Bài tập



Bài 1: Lập trình tính tổng của n số bất kỳ

Bài 2 : Với yêu cầu trên dùng vòng lặp Repeat .

Bài 3 : Lập trình tính tổng cuả n số bất kỳ dùng vòng lặp While .

Bài 4 : Lập trình tính tổng của nhiều số bất kỳ nhập từ bàn phím (trừ số 0) . Nếu gõ số 0 thì dừng

tính và thông báo kết quả tính đợc ra màn hình .

Bài 5 : Tìm USCLN của 2 số theo thuật giải :

1,Nếu a=b thì USCLN =a=b .

2,Xác định số lớn hơn trong hai số.

3,Thông số lớn hơn bằng hiệu 2 số .

4,Quay lại về bớc 1

Bài 6 :Lập trình tính an =? Với a và n cho trớc .

Bài 7 :Lập trình tính trung bình cộng của n số thực cho trớc .

Bài 8 : Cho N số tự nhiên . Tính tổng của n số chẵn , tổng của các số lẻ và tích của tổng chẵn và lẻ

Bài 9: Tính căn bậc hai của số thực A cho trớc Theo thuật giải :

Yn+1 = = Với Y1=1

Khi thoả mãn điều kiện :

<=10-6

Bài 10 : Tính căn bậc 3 của số A cho trớc với độ chính xác cho trớc theo thuật giải :

= Yn+1 =

Khi điều kiện :

<=

Baì 11 : Tính S=1+x+x/2+x/3+......+x/n với x là số thực , n là số nguyên cho trớc

Bài 12 : Tính

Sin(x)=......

Bài 13 : Tính

Cos(x)=1Bài 14: Lập chơng trình nhập vào các số nguyên cho đến khi gặp số 0 . Tính tổng của các số dơng ,

đếm xem có bao nhiêu số âm , trung bình cộng của các số lẻ rồi đa kết quả ra màn hình .

Baì 15 : Lập chơng trình nhập vào x,n (n là số lợng các dấu căn) từ bàn phím rồi tính :

F=

Bài 16: Lập chơng trình nhập vào x,n từ bàn phím rồi tính :

S = 1+x/2+x2/3+x3/4+......+xn/n+1

Baì 17: Lập trình nhập vào hai số nguyên , tìm ớc số chung lớn nhất của hai số đó . Trong chơng

trình có kiểm tra xem 2 số đó có lớn hơn 0 và nhắc nhở vào lại cho đến khi thoả mãn .

Baì 18 Lãi xuất hàng tháng gửi tiết kiệm là 1% (không kỳ hạn) . Một ngời gửi vào số tiền ban đầu là

a .Vậy sau bao nhiêu tháng ngời đó đạt đợc số tiền không lớn hơn b .



75



Giáo trình Tin học Đại cơng



KS.Đặng Quang Thanh



Bài 19: Lập chơng trình tìm tất cả các số nguyên có 3 chữ số mà tổng các chữ số đó bằng 20 và lấy

số đó chia cho 6 thì d 2 .

Baì 20 :

Yn+1==(Yn + ) Với Y1 = 1

Khi thoả mãn điều kiện :

<=10-6

Bài 21: Viết chơng trình kiểm tra công thức sau:

1+2+3+4+.......+N = N(N+1)/2

Bài 22: Viết chơng trình kiểm tra công thức sau:

12 + 22 + 32 + .......+ n2 = n(n+1)(2n+1)/6

Bài 23 : Lập Trình tính S:

S = n(n-1)......(n-m+1)/m!

Bài 24: Tính tổng

S = 1 + 3 + 5 +7 + 9 + 11 + 13

Bài 25: Tính tổng

S = 1 + 3 + 5 + .......+ n

N có thể là chẵn hoặc là lẻ.

Bài 26: Viết chơng trình in lên màn hình các thông tin sau:

a. Các số có hai chữ số trong đó số hàng chục nhận giá trị từ 3 đến 8 , chữ số hàng đơn vị

nhận giá trị từ 2 đến 9.

b. Tổng các chữ số có hai chữ số

c. Tích các số chẵn của một chữ số.

Bài 27: Viết chơng trình nhập chiều dài , chiều rộng của hình chữ nhật và in chữ nhật đó ra màn

hình bằng các dấu * có dạng sau:

***********

*



*



***********

Bài 28: Viết chơng trình nhập vào chiều cao và in ra màn hình tam giác bởi các dấu * có dạng nh

sau:

*

* *

** * **

*********

Bài 29: Viết chơng trình in ra màn hình bản cửu chơng

Bài 30: Viết chơng trình nhập vào một số thực a từ bàn phím và tìm số tự nhiên n nhỏ nhất sao cho:

1 + 1/2 + 1/3 + ........+1/n > a

Bài 31: Viết chơng trình đọc một kí tự từ bàn phím và in ra màn hình mã ASCII của nó. Chơng trình

chỉ kết thúc khi phím số không đợc nhấn.

Bài 32: Viết chơng trình nhập vào một số tự nhiên từ bàn phím và in ra màn hình các số các chữ số

lẻ có mặt trong số đớ. Ví dụ nhập 3456, in ra số có hai chữ số lẻ.

Bài 33: Ta định nghĩa số hoàn hảo là số bằng tổng các ớc số của nó mà không kể chính nó. Ví dụ

28=1+2+4+7+14. Viết chơng trình tìm mọi số hoàn hảo không lớn hơn số n cho trớc.

Bài 34: Cho số thực a và số tự nhiên n. Hãy tính:



76



Giáo trình Tin học Đại cơng



KS.Đặng Quang Thanh



a/ a(a+1).......(a+n-1)

b/ 1/a + 1/a(a+1)+........+1/a(a+1)....(a+n)

Bài 35: Tìm tất cả các ớc số của một số nguyên n cho trớc

Bài 36: Biết số dân thành phố là 650000 và tỷ lệ tăng dân là 4.5% mỗi năm, hãy tính số dân trong

vòng năm năm tiếp theo.

Bài 37: Hãy in ra mã ASCII của các kí tự từ A đến Z và từ a đến z .

Bài 38: Tính tổng bình phơng các số lẻ từ 1 đến n

Bài 39: Tính tổng bình phơng các số chẵn từ 1 đến n

Bài 40: Đọc vào n số nguyên rồi in ra giá trị cực đại.

Bài 41: Tìm các số nguyên a,b,c,d khác nhau trong khoảng (0,10) thỏa mãn điều kiện

a*d*d=b*c*c*c

Bài 42: Giải bài toán vui

Trăm trâu trăm cỏ

Trâu đứng ăn năm

Trâu nằm ăn ba

Lụ khụ trâu già

ba con một bó

Hỏi có mấy trâu đứng, nằm , già

Bài 43: Một tờ giấy có độ dày 0.1 mm. Phải gấp đôi tờ giấy lên bao nhiêu lần để nó dày hơn 1m.

Bài 44: Tìm tất cả các số nguyên tố trong khoảng (2,n).

Bài 45: Đổi một số nguyên sang hệ nhị phân

Bài 46: Đổi một số nguyên sang hệ thập lục phân

Bài 47: Sử dụng REPEAT...UNTIL , viết chơng trình nhập điểm một môn học nào đó của từng học

sinh và tính điểm trung bình của lớp .

Bài 48: Làm lại bài 47 sử dụng WHILE .....DO

Bài 49: Làm lại bài tập trên sử dụng FOR..TO...DO



77



Giáo trình Tin học Đại cơng



KS.Đặng Quang Thanh



chơng V

Kiểu vô hớng liệt kê , kiểu đoạn con

Dữ liệu có cấu trúc : kiểu mảng

I. Định nghĩa kiểu dữ liệu mới

Trong quá trình lập trình có những biến ta không thể xác định đợc kiểu dữ liệu của nó.

Pascal cung cấp cho ta các kiểu dữ liệu cơ sở (real, integer, string, char, boolean) đã có sẵn. Còn để

sử lý các bài toán phức tạp hơn, chúng ta phải tự định nghĩa những kiểu dữ liệu mới dựa trên năm

kiểu cơ sở.

Để định nghĩa kiểu dữ liệu mới, trong phần khai báo sau từ khoá TYPE ta sẽ định nghĩa

thêm các kiểu dữ liệu mới cần dùng để sau đó ta có thể sử dụng kiểu dữ liệu mới này nh dùng kiểu

dữ liệu cơ sở.

Ví dụ: Ta định nghĩa dữ liệu kiểu màu sắc gồm 3 màu Đo, xanh, vàng nh sau:

TYPE

Mausac=(do, xanh, vang);

Var

Mau:mausac;

II. Kiểu vô hớng liệt kê (Enumerated Scalar type)

Một kiểu dữ liệu thuộc kiểu vô hớng có thể đợc định nghĩa nh là một tập hợp các giá trị đợc

sắp xếp theo một thứ tự tự nhiên. Một biến khi đợc khai báo là kiểu vô hớng nào đó có thể nhận một

giá trị trong tập hợp các giá trị đó.

Ví dụ: các ngày trong tuần khi định nghĩa là một kiểu liệt kê

Type

Ngay=(hai, ba, bon, nam, sau, bay, chunhat);

Var

Thu: ngay;

1. Viết ra màn hình giá trị kiểu liệt kê

Ta không thể dùng trực tiếp lệnh Write hoặc Writeln để in ra màn hình nh các biến có kiểu

thuộc các kiểu cơ sở. Mà ta phải dùng một thủ thuật sau:

Giả sử muốn in thứ hai ra màn hình

IF thu=hai then Write('Hai');

2. Đọc vào kiểu liệt kê

Tơng tự nh in ta không thể đọc vào một cách trực tiếp bằng lệnh readln mà phải làm nh sau:

đọc số thứ tự của giá trị biến vô hớng rồi biến đổi kiểu dữ liệu thêm.

Type

Ngay=(hai, ba, bon, nam, sau, bay, chunhat);

Var

Thu: ngay;



78



Giáo trình Tin học Đại cơng



KS.Đặng Quang Thanh



I:integer;

BEGIN

Readln(i);

Thu:=ngay(i);

END.

*Hàm thứ tự ORD(x)

Hàm này cho ta số thứ tự của x trong kiểu vô hớng đếm đợc , thực chất là hàm biến

đổi một giá trị kiểu vô hớng đếm đợc sang gia strị kiểu số nguyên.

Ví dụ:

ORD(ba)=1 là đúng vì ba có số thứ tự là 1

Ngợc lại

Ngay(4) cho ta kết quả là sau

III. Kiểu khoảng con (Sub-range Type)

Ta thấy rằng có nhiều trờng hợp một biến có thể chỉ lấy giá trị trong một khoảng đợc xác

định bởi giá trị giới hạn dới và giá trị giới hạn trên thuộc một kiểu vô hớng đếm đợc nào đó.

Cách định nghĩa kiểu khoảng con:

TYPE

Tên kiểu=hằng cận dới..hằng cận trên;

Ví dụ: Tuổi thọ của ngời từ 0 đến 100. khi đó ta có thể định nghĩa nh sau:

TYPE

Tuoitho=0..100;

Var

Tuoi:tuoitho;

IV. Dữ liệu kiểu mảng

1. Định nghĩa: Mảng là tập hợp hữu hạn các phần tử có cùng kiểu. Số phần tử của mảng đợc

xác định ngay từ khi định nghĩa ra mảng. Mỗi phần tử của mảng đợc truy nhập trực tiếp thông qua

tên mảng cùng với chỉ số của mảng đợc đặt trong hai ngoặc vuông[].

2. Định nghĩa kiểu mảng và khai báo

TYPE

Kiểu_mảng=array[miền chỉ số1, miền chỉ số 2...] of kiểu_phần_tử;

Var

Tên_biến_mảng:Kiểu_mảng;

Hoặc có thể khai báo trực tiếp

Var

Ten_biến_mảng:array[miền chỉ số1, miền chỉ số 2...] of kiểu_phần_tử;



79



Xem Thêm
Tải bản đầy đủ (.doc) (236 trang)

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

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