Ví dụ về câu lệnh ghép trong Pascal

Xem toàn bộ tài liệu Lớp 11: tại đây

Giải Bài Tập Tin Học 11 – Bài 9: Cấu trúc rẽ nhánh giúp HS giải bài tập, giúp cho các em hình thành và phát triển năng lực sử dụng công nghệ thông tin và truyền thông:

    • Sách Giáo Viên Tin Học Lớp 11

    1. Rẽ nhánh

    Cấu trúc rẽ nhánh: Cấu trúc dùng để diễn đạt một việc sẽ được thực hiện khi một điều kiện cụ thể được thỏa mãn.

    Rẽ nhánh bao gồm 2 loại:

    + Dạng thiếu: Nếu … thì

    Ví dụ: Nếu trời nắng thì chúng ta sẽ đi chơi.

    Vậy nếu trời không nắng thì chúng ta làm gì còn chưa biết.

    + Dạng đủ: Nếu … thì …,nếu không thì.

    Ví dụ: Nếu trời nắng thì chúng ta sẽ đi chơi, nếu không thì chúng ta sẽ ở đọc truyện ở nhà.

    Vậy nếu trời không nắng chúng ta sẽ ở nhà đọc truyện.

    2. Câu lệnh if-then

    Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh if-then. Tương ứng với hai dạnh thiếu và đủ nói ở trên, Pascal có hai câu lệnh if-then.

    a) Dạng thiếu

    if<điều kiện> then <câu lệnh>;

    b) Dạng đủ

    if<điều kiện> then <câu lệnh 1> else <câu lệnh 2>;

    Trong đó:

    + Điều kiện là biểu thức logic.

    + Câu lệnh, câu lệnh 1, câu lệnh 2 là một câu lệnh của Pascal.

    Ở dạng thiếu: điều kiện sẽ được tính và kiểm tra. Nếu điều kiện đúng (có giá trị true) thì câu lệnh sẽ được thực hiện, ngược lại thì câu lệnh sẽ bị bỏ qua.

    Ở dạng đủ: điều kiện cũng được tính và kiểm tra. Nếu điều kiện đúng thì câu lệnh 1 sẽ được thực hiện, ngược lại thì câu lệnh 2 sẽ được thực hiện.

    Ví dụ:

    If d<=0 writeln(‘day la so duong’); If a mod 3=0 then writeln(‘a chia het cho 3’) Else writeln(‘a khong chia het cho 3’);

    3. Câu lệnh ghép

    Trong nhiều trường hợp ,sau một số từ khóa (như then hoặc else ) phải là một lệnh đơn. Nhưng trong nhiều trường hợp các thao tác sau những tên dành riêng đòi hỏi không chỉ một mà là nhiều câu lệnh để mô tả. Trong trường hợp như vậy, ngôn ngữ lập trình cho phép gộp một dãy các câu lệnh thành một câu lệnh ghép.

    Trong Pascal câu lệnh ghép có dạng:

    Begin <các câu lệnh>; End;

    Thuật ngữ câu lệnh, câu lệnh 1, câu lệnh 2 trong các câu lệnh if-then ở mục trên có thể là câu lệnh ghép.

    Ví dụ:

    If D<0 then writeln(‘Phuong trinh vo nghiem ’) Else Begin X1:=(-b-sqrt(b*b-4*a*c))/(2*a); X2:=-b/a-x1; End;

    Ví dụ 2:

    Viết chương trình tìm nghiệm thực của phương trình bậc hai:

    ax2+bx+c = 0 với a ≠ 0.

    Program gptb2; Uses crt; Var a,b,c:real; D,X1,X2:real; Begin Clrscr; Write(‘a,b,c:’); Readln(a,b,c); D:=b*b-4*a*c; If D<0 then writeln(‘Phuong trinh vo nghiem ’) Else Begin X1:=(-b-sqrt(D))/(2*a); X2:=-b/a-X1; Writeln(‘X1=’,X1:8:3,’ X2=’,X2:8:3); End; Readln; End.

    Bài tập và thực hành 2 Tin học lớp 11: Giải câu 1 đến câu 5 trang 50 .Hãy cho biết sự giống và khác nhau của hai dạng câu lệnh if – then…

    Câu 1: Hãy cho biết sự giống và khác nhau của hai dạng câu lệnh if – then.

     

    Ví dụ về câu lệnh ghép trong Pascal

    1. Sự giống và khác nhau của hai dạng câu lệnh if-then

    Hai dạng cầu lệnh if-then như sau:

    a) Dạng thiếu

    If<điều kiện> then <câu lệnh>;

    if <điều kiện> then <câu lệnh 1 >else <câu lệnh 2 > ;

    trong đó:

    Điều kiện biểu thức quan hệ hoặc lôgic.

    Câu lệnh, câu lệnh 1, câu lệnh 2 là một câu lệnh của Pascal.

    Giống nhau: đều cùng là câu lệnh rẽ nhánh và khi gặp một điều kiện nào đó thì chọn lựa thực hiện thao tác thích hợp.

    Khác nhau: Trong câu lệnh if-then dạng thiếu, nếu điều kiện không đúng thì thoát khỏi cấu trúc rẽ nhánh, thực hiện câu lệnh tiếp theo của chương trình, còn trong câu if-then dạng đủ, nếu điều kiện không đúng thì thực hiện công việc 2, sau đó mói thoát khỏi cấu trúc rẽ nhánh, thực hiện câu lệnh tiếp theo cùa chương trình.

    Câu 2: Câu lệnh ghép là gì? Tại sao phải có câu lệnh ghép?

    Trả lời

    Câu lệnh ghép là một câu lệnh được hợp thành từ nhiều câu lệnh thành phần (đơn hoặc kép). Câu lệnh ghép nhằm thực hiện thao tác gồm nhiều thao tác thành phần. Mỗi thao tác thành phần tương ứng với một câu lệnh đơn hoặc câu lệnh ghép khác. Về mặt ngôn ngữ lập trình, câu lệnh ghép là một trong các yếu tố để tạo khả năng chương trình có cấu trúc.

    Câu lệnh ghép trong Pascal.

    Begin

    <các câu lệnh>

    End;

    Câu 3: Có thể dùng câu lệnh while-đo để thay cho câu lệnh for-do được không? Nếu được, hãy thực hiện điều đỏ với chương trình.

    Ví dụ về câu lệnh ghép trong Pascal

    Có thể thay thế đoạn chương trình chứa câu lệnh for-đo (dạng lặp tiến) for <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;

    bằng đoạn chương trình chứa câu lệnh while-do như sau:

    i:= <giá trị đầu>;

    while <i< = <giá trị cuối> do

    begin

    <câu lệnh>;

    <tăng i một đơn vị>,

    end;

    Như vậy, chương trình tính Tong_la viết bằng lệnh for-do

    program Tong__la;

    uses crt;

    var S:real,

    a, N: integer;

    begin

    clrscr;

    write(‘Hay nhap gia tri a vao!’); readln(a);

    S:= 1.0/a;

    for N:=1 to 100 do S: = S+1.0/ (a+N);

     writeln(‘Tong S la:’, S:8:4); readln;

    End.

    được viết lại bằng lệnh while-do như sau:

    Program Tong_la;

    uses crt;

    var S:real;

    a, N: integer;

    Begin

    clrscr;

    write(‘Hay nhap gia tri a vao!’); readln(a);

    S:= 1.0/a;

    N:= 1;

    while N<=100 do begin

    S:= s + 1.0/(a+N);

    N:= N + 1; end;

    writeln(‘Tong s la:’, S:8:4); readln;

    End.

    Câu 6: Lập trình để giải bài toán cổ sau:

    Vừa gà vừa chó.

    Bó lại cho tròn.

    Ba mươi sáu con,

    Một trăm chân chằn.

    Hỏi bao nhiêu con mỗi loại?

    Ví dụ về câu lệnh ghép trong Pascal

    program Tim_ga_cho;

    uses crt;

    var ga, cho: integer;

    Begin

    clrscr;

    for cho:= 1 to 24 do

    begin

    ga:= 3 6 – cho,

    if ga + 2*cho = 50 then writeln(‘Ga:’,ga,’ Cho:’,cho); end;

    readln

    End.

    Câu 7: Nhập từ bàn phím tuổi của cha và con (tuổi của cha hơn tuổi con ít nhất là 25). Đưa ra màn hình bao nhiêu năm nữa thì tuổi cha gấp đôi tuổi con.

    Ví dụ về câu lệnh ghép trong Pascal

    Chương trình về tuổi cha và tuổi con:

    program tuoi_cha_con;

    uses crt;

    var tuoicha, tuoicon, nam: longint;

    begin

    clrscr;

    write(‘Nhap tuoi cha va con(tuoicha-tuoicon>=25) ;

    readln(tuoicha,tuoicon); nam:= 0;

    while tuoicha<>2*tuoicon do begin

    tuoicha:= tuoicha + tuoicon := tuoicon + 1; nam:= nam +1;

    end;

    writeln ( ‘ Sau ‘ , nam, ‘ nam, tuoi cha gap doi tuoi con’ );

    readln

    End.

    Câu 8: Một người gửi tiết kiệm không kì hạn với số tiền A đồng với lãi suất 0,2% mỗi tháng. Hỏi sau bao nhiêu tháng, người đó rút tiền thì sẽ nhận được số tiền là bao nhiêu. Biết rằng tiền gửi tiết kiệm không ki hạn không được tính cộng vào vốn.

    Ví dụ về câu lệnh ghép trong Pascal

    Chương trình gửi tiền tiết kiệm

    program Gui_tiet_kiem;

    uses crt;

    const laisuat = 0.002;

    var tiengui, tienrutve, luu: real;

    thang : integer;

    Begin

    clrscr;

    write (‘Nhap vao so tien gui:’),

    readln(tiengui);

    luu:= tiengui;

    write(‘So tien co khi rut ve: ’);

    readln(tienrutve);

    thang : = 0 ;

    while Tiengui < tienrutve> do begin

    tiengui:= tiengui + tiengui* laisuat ; thang:= thang + 1 ;

    end;

    write(‘Gui’,luu: 0 : 0, ‘ dong, sau thang, thang’);

    writeln(‘se nhan duoc so tien’,tienrutve:0 : 0,’ dong’);

    readln

    End .

    Khi chạy chương trình, với số tiền gửi ban đầu là 20000000 đồng. Muốn có được số tiền sau khi rút về là 25000000 đồng thì phải mất 112 tháng.

    Kết quả chương trình cho như hình 25 dưới đây:

    Ví dụ về câu lệnh ghép trong Pascal

    Câu 4: Viết câu lệnh rẽ nhánh tính:

    Ví dụ về câu lệnh ghép trong Pascal

    Ví dụ về câu lệnh ghép trong Pascal

    Ví dụ về câu lệnh ghép trong Pascal

    if sqr(x) + sqr(y)<= 1 then z:= sqr(x) + sqr (v)

    else

    if y >= X then z:= X + y else z:= 0.5;

    b)

    if sqr (x-a)+sqr (y-b) <= sqr(r)then z:= abs (x)ì+afc)S(y/) else z:= X + y;

    Câu 5: Lập trình tính:

    Ví dụ về câu lệnh ghép trong Pascal

    Ví dụ về câu lệnh ghép trong Pascal

    a) program Tong_5a,

    uses crt,

    var y: real;

    n: byte;

    Begin

    clrscr

    y : 0;

    for n :=1 to 50 do

    y : = y + n / ( n +1 ) ;

    writeln(‘Tong y la: y:0:18);

    readln ;

    End.

    Nếu biến y khai báo theo kiểu extended thì chương trình tính tổng y sẽ là như sau:

    ($e+, N+}

    program Tong_5a;

    uses crt;

    var y: real;

    n :byte;

    Begin clrscr;

    y : = 0 ;

    for n:= 1 to 50 do

    y:= y + n/(n+1);

    writeln(‘Tong y la: y:0:18);

    readln

    End.

    b)

    program Tong_5b;

    uses crt;

    var n: longint;

    e, sh: real;

    Begin

    clrscr;

    sh:= 1/2,

    n: = 2 ;

    e:= 2 + sh;

    while sh>= 2*1E-16 do

    begin

    inc (n) ,

    sh: = sh*(1/n) ,

    e:= e + sh;

    end;

    writeln(‘Gia tri e(n)la: ‘,e:10:6);

    readln

    End.