Thứ năm, 21/11/2019 - 02:42|
Chào mừng bạn đến với cổng thông tin điện tử của Trường THCS số 2 Phố Ràng

CHUYÊN ĐỀ BỒI DƯỠNG HỌC SINH GIOI

Chuyên đề 1: CÁC CÂU LỆNH CÓ CẤU TRÚC

A.MỤC TIÊU

1.Kiến thức: Học sinh nắm được các lệnh có cấu trúc, làm được các bài tập sữ dụng các lệnh có cấu trúc

2.Kỹ năng: Rèn kỹ năng viết câu lệnh chính xác, kỹ năng vận dụng các câu lẹnh vào từng bài toán cụ thể

3.Thái độ: Học sinh tích cực chính xác khi viết các câu lệnh, biết vận dụng vào các bài toán thực tế

B. NỘI DUNG

3. Bài mới

I. CÂU LỆNH RẼ NHÁNH

1.1. Lệnh IF

          Cú pháp:

                   (1)     IF  B THEN  S;

                        (2)       IF  B  THEN  S1  ELSE  S2;

1.2. Lệnh CASE

          Cú pháp:

Dạng 1

Dạng 2

CASE  B OF

          Const 1: S1;

          Const 2: S2;

          ...

          Const n: Sn;

END;

CASE  B OF

          Const 1: S1;

          Const 2: S2;

          ...

          Const n: Sn;

ELSE  Sn+1;

END;

          Trong đó:

  1. 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ê.
  2. 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).
  3. 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.

II. CÂU LỆNH LẶP

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

          Có hai dạng sau:

                Dạng tiến   

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

                Dạng lùi

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

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

5.3.2. Vòng lặp không xác định

Dạng REPEAT

Dạng WHILE

Repeat

S;

Until B;

While B Do S;

Ý nghĩa:

  • 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.
  • Bài tập 1: 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ẻ.

    Uses crt;

    Var  x:integer;

    Begin

      Write('Nhap vao mot so nguyen : ');  Readln(x);

              If x MOD 2=0 Then

                       Writeln('So vua nhap vao la so chan')

              Else

                       Writeln('So vua nhap vao la so le');

              Readln;

    End.

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

    Uses Crt;

    Var  a,b,x : real;

    Begin

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

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

              If a = 0 Then         { Nếu a bằng 0 }

                       If b = 0 Then  { Trường hợp a = 0 và b = 0 }

                                 Writeln('Phuong trinh co vo so nghiem')

                       Else   { Trường hợp a=0 và b ¹ 0 }

                                 Writeln('Phuong trinh vo nghiem')

              Else  { Trường hợp a ¹ 0 }

                       Begin

                                 x:= -b/a;

                                 Writeln('Phuong trinh co nghiem la :',x:0:2);

                       End;

              Readln;

    End.

    Bài tập 3: Viết chương trình nhập vào tuổi của một người và cho biết người đó là thiếu niên, thanh niên, trung niên hay lão niên. Biết rằng: nếu tuổi nhỏ hơn 18 là thiếu niên, từ 18 đến 39 là thanh niên, từ 40 đến 60 là trung niên và lớn hơn 60 là lão niên.

    Program bai3;

    Uses crt;

    Var tuoi:Byte;

    Begin

              Write(Nhap vao tuoi cua mot nguoi:'); Readln(tuoi);

              Case tuoi Of

                       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.

     

    Bài tập 4: Viết chương trình tính tổng S = 1+2+...+N.

    Cách 1: Dùng vòng lặp FOR.

    Program TinhTong;

    Uses crt;

    Var N,i,S:integer;

    Begin

              Clrscr;

              Write('Nhap vao gia tri cua N :'); Readln(N);

              S:=0;

              For i:=1 to N do S:=S+i;

              Writeln('Ket qua la :',S);

              Readln;

    End.

    Cách 2: Dùng vòng lặp REPEAT.

    Program TinhTong;

    Uses crt;

    Var N,i,S:integer;

    Begin

              Clrscr;

              Write('Nhap vao gia tri cua N :'); Readln(N);

              S:=0; i:=1;

              Repeat

                       S:=S+i;

                       i:=i+1;

              Until i>N;

              Writeln('Ket qua la :',S);

              Readln;

    End.

    Cách 3: Dùng vòng lặp WHILE.

    Program TinhTong;

    Uses crt;

    Var N,i,S:integer;

    Begin

              Clrscr;

              Write('Nhap vao gia tri cua N :'); Readln(N);

              S:=0; i:=1;

              While i<=N Do

                       Begin

                                 S:=S+i;

                                 i:=i+1;

                       End;

              Writeln('Ket qua la :',S);

              Readln;

    End.

    Bài tập 5: Viết chương trình nhập vào N số nguyên từ bàn phím. Hãy tính và in ra màn hình tổng của các số vừa được nhập vào.

    Ý tưởng:

              Dùng phương pháp cộng dồn. Cho vòng lặp FOR chạy từ 1 tới N, ứng với lần lặp thứ i, ta nhập vào số nguyên X và đồng thời cộng dồn X vào biến S.

    Program  Tong;

    Uses crt;

    Var N,S,i,X : Integer;

    Begin

              Clrscr; S:=0;

              For i:=1 To n Do

                       Begin

                                 Write('Nhap so nguyen X= '); Readln(X);

                                 S:=S+X;

                       End;

              Writeln(‘Tong cac so duoc nhap vao la: ‘,S);

              Readln;

    End.

    Bài tập 6: Viết chương trình nhập vào các số nguyên cho đến khi nào gặp số 0 thì kết thúc. Hãy đếm xem có bao nhiêu số chẵn vừa được nhập vào.

    Ý tưởng:

              Bài toán này không biết chính xác số lần lặp nên ta không thể dùng vòng lặp FOR. Vì phải nhập vào số nguyên N trước, sau đó mới kiểm tra xem N=0? Do đó ta nên dùng vòng lặp REPEAT.

    Program  Nhapso;

    Uses crt;

    Var N,dem : Integer;

    Begin

              Clrscr; dem:=0;

              Repeat

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

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

              Until N=0;

              Writeln(‘Cac so chan duoc nhap vao la: ‘,dem);

              Readln;

    End.

    Bài tập 7: Viết chương trình tính số Pi với độ chính xác Epsilon, biết:

                                          Pi/4 = 1-1/3+1/5-1/7+...

    Ý tưởng:

              Ta thấy rằng, mẫu số là các số lẻ có qui luật: 2*i+1 với i=1,...,n. Do đó ta dùng i làm biến chạy.

              Vì tính số Pi với độ chính xác Epsilon nên không biết trước được cụ thể số lần lặp, do đó ta phải dùng vòng lặp WHILE hoặc REPEAT. Có nghĩa là phải lặp cho tới khi t=4/(2*i+1) £ Epsilon thì dừng.

    Uses Crt;

    Const Epsilon=1E-4;

    Var Pi,t:real;

        i,s:Integer;

    Begin

              Pi:=4;  i:=1; s:=-1;

              t:=4/(2*i+1);

              While t>Epsilon Do

                       Begin

                                 Pi:=Pi+s*t;

                                 s:=-s; i:=i+1;

                                 t:=4/(2*i+1);

                       End;

              Writeln('So Pi = ',Pi:0:4);

              Readln;

    End.

    Bài tập 8:    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.

    Uses Crt;

    Var N,i : Integer;

    Begin

              Clrscr;

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

              For i:=1 To N Do

                       If N MOD i=0 Then        Write(i:5);

              Readln;

    End.

 

 

 

Bài tin liên quan
Chính phủ điện tử
Tin đọc nhiều
Liên kết website
Thống kê truy cập
Hôm nay : 1
Hôm qua : 14
Tháng 11 : 479
Năm 2019 : 5.853