Đăng Nhập

Quên mật khẩu

November 2018
MonTueWedThuFriSatSun
   1234
567891011
12131415161718
19202122232425
2627282930  

Calendar Calendar

Thống Kê
Hiện có 1 người đang truy cập Diễn Đàn, gồm: 0 Thành viên, 0 Thành viên ẩn danh và 1 Khách viếng thăm

Không

[ View the whole list ]


Số người truy cập cùng lúc nhiều nhất là 48 người, vào ngày 2/8/2017, 00:32
Statistics
Diễn Đàn hiện có 74 thành viên
Chúng ta cùng chào mừng thành viên mới đăng ký: AlinaL92956302

Tổng số bài viết đã gửi vào diễn đàn là 107 in 53 subjects

Bài 6: Vòng lặp không biết trước số lần lặp(While và Repeat)

Go down

Bài 6: Vòng lặp không biết trước số lần lặp(While và Repeat)

Bài gửi by Admin on 10/4/2014, 21:21

A. Lý thuyết

1. Lệnh While
     - Cú pháp:       While (Biểu thức so sánh) do
                               Câu lệnh
     - Ý nghĩa: Trước tiên máy tính kiểm tra biểu thức so sánh, nếu đúng thì thực hiện câu lệnh, tiếp tục quay lại kiểm tra biểu thức so sánh và nếu đúng lại thực hiện câu lệnh, ... cứ thực hiện hoài cho đến khi biểu thức so sánh sai thì ngưng vòng lặp.
     - VD: Tính tổng các số từ 1 đến 10
             
             Program vd;
             uses crt;
             var
                   tong,i:integer;
             BEGIN
                         tong:=0;
                         while i<=10 do
                               begin
                                         tong:=tong+i;
                                         i:=i+1;
                               end;
             END.
     - Chú ý:
             Nếu ngay từ đầu máy tính kiểm tra biểu thức so sánh mà sai thì không thực hiện lệnh nào trong vòng lặp(thoát khỏi vòng lặp).
             Sử dụng lệnh này rất dễ rơi vào trạng thái lặp vô hạn, để không bị lặp vô hạn cần thực hiện tốt 2 điều sau:
                 + Biểu thức so sánh cần chặn ở đích(ở VD trên chính là i<=10)
                 + Vòng lặp này không tự thay đổi giá trị của biến trong biểu thức như vòng lặp for. Do vậy trong vòng lặp cần có 1 câu lệnh làm thay đổi giá trị của biến trong biểu thức, câu lệnh đó phải đảm bảo qua một số bước nào đó biểu thức so sánh sẽ bị sai(ở VD trên chính là i:=i+1).
             Nếu rơi vào trạng thái lặp vô hạn, nhấn tổ hợp phím CTRL + BREAK
             Nếu có cần thực hiện nhiều lệnh(từ 2 lệnh trở lên) cần đặt các lệnh đó trong cặp từ khóa Begin ... end;

2. Lệnh Repeat
     - Cú pháp:            Repeat
                                         lệnh 1;
                                         lệnh 2;

                                         .......
                                         lệnh n;

                               Until  (Biểu thức so sánh);
     - Ý nghĩa: Máy tính sẽ thực hiện các lệnh trong cặp từ khóa Repeat .. Until trước sau đó kiểm tra biểu thức, nếu sai quay lại thực hiện các lệnh, ... vòng lặp sẽ kết thúc khi biểu thức là đúng.

     - VD: Tính tổng các số từ 1 đến 10
             
             Program vd;
             uses crt;
             var
                   tong,i:integer;
             BEGIN
                         tong:=0;
                         i:=1;
                         Repeat
                                     tong:=tong+i;
                                     i:=i+1;
                         Until i>10;
             END.   
     - So sánh lệnh While và Repeat
        
WhileRepeat
- Biểu thức đúng thì thực hiện lệnh- Biểu thức đúng thì ngưng vòng lặp
- Kiểm tra biểu thức trước rồi thực hiện lệnh- Thực hiện lệnh trước rồi kiểm tra điều kiện
- Biểu thức sai thì không thực hiện lệnh nào- Biểu thức dù đúng hay sai cũng thực hiện ít nhất 1 lệnh.
B. Bài tập

Bài 1: Tính tổng các số từ 2 đến 100
Bài 2: Cho số thực a và số tự nhiên n nhập từ bàn phím. Viết chương trình tính công thức a mũ n
     Gợi ý: 
     - Nhập a,n
     - Khai báo thêm biến ketqua
     - Dùng vòng lặp Repeat
     - ketqua=a*a*...*a(có n số a)
     - Điều kiện: không vượt quá n
     VD: a = 3, n = 2 thì 3^2 = 9
Bài 3: Cho số nguyên dương n nhập từ bàn phím. Tính tổng sau:
1+1/2+1/3+1/4+ ... +1/n
     Gợi ý:
     - Nhập n
     - Dùng vòng lặp While hoặc Repeat đều được
     - Biểu thức so sánh: biến chạy không vượt quá n
Bài 4: Viết chương trình nhập vào số thực a. Tìm số tự nhiện n sao cho:
1+1/2+1/3+1/4+ ... +1/n > a
     Gợi ý: 
     - Nhập a
     - Làm giống bài 2
     - Tuy nhiên không in ra kết quả Tong như bài 2 mà lấy kết quả Tong làm điều kiện, Tong > a thi in ra biến chạy.
Bài 5: Tìm ước chung lớn nhất của hai số nguyên a và b
     Thuật toán:
        - Nếu a = b thì UCLN chính là a(hoặc b)
        - Ngược lại:
            + Lấy số lớn chia cho số nhỏ được số dư thứ 1
            + Lấy số chia, chia cho số dư thứ 1 được số dư thứ 2
                   ...................
            + Thực hiện cho đến kho số dư thứ n bằng 0 thì U7CLN = số dư thứ n-1
     VD: Tim U7CLN của 9 va 6 thực hiện như sau:
        - lấy 9 chia 6 được 1 (dư 3)
        - lấy 6 chia 3 được 2 (dư 0)
        - vậy U7CLN của 9 va 6 là số dư trước đó(tức là số 3)
        Gợi ý:
     + Nhập a,b
     + Dùng vòng lặp Repeat
     + Gán r:=a mod b;
              a:=b;
              b:=r;
Bài 6: Tìm bội chung nhỏ nhất của hai số nguyên a và b
     Gợi ý:
       - Tìm UCLN của a và b
       - Bội cung nhỏ nhất bằng tích 2 số chia cho ước chung lớn nhất của hai số đó(BCNN = a*b/UCLN)

Bài 7: Viết chương trình thực hiện công việc sau:
         Nhập một ký tự bất kỳ là chữ cái từ bàn phím. Dừng nhập khi kí tự là ‘C’. In ra các kí tự hoa tương ứng của các kí tự được nhập trên một hàng.
     Gợi ý:
      - Nhập biến chu(char)
      - Dùng vòng lặp Repeat
      - Mỗi lần nhập 1 kí tự(nhưng chưa in ra màn hình), cứ nhập cho đến khi nhập chữ C thì ngưng(chính là điều kiện để kết thúc vòng lặp).
      - Sau khi thoát khỏi vòng lặp thì in tất cả các kí tự vừa nhập trên 1 hàng(in ra bằng chữ HOA)
      - Lệnh upcase(n) : đổi kí tự chữ thường sang chữ hoa.


Được sửa bởi Admin ngày 16/1/2015, 17:16; sửa lần 3.

Admin
Admin

Tổng số bài gửi : 59
Points : 171
Reputation : 3
Join date : 06/10/2013
Age : 35
Đến từ : Cà Mau

Xem lý lịch thành viên http://phamhoe.forumvi.com

Về Đầu Trang Go down

Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết