I. CẤU TRÚC RẼ NHÁNH

1. Câu lệnh if – then

a) Dạng thiếu

if <điều kiện> then <Câu lệnh1>;…

Nếu điều kiện đúng thì thực hiện <câu lệnh 1>; rồi thực hiện câu lệnh kế tiếp (…)

+ “Nếu Delta<0 thì phương trình vô nghiệm”

+ “Nếu i chia cho 2 dư không thì i là số chẵn”

+ if delta<0 then write(‘Phuong trinhvo nghiem’);

+ if i mod 2 =0 then write(‘i la so chan’);

  • Ví dụ: Cho biết kết quả của đoạn CT sau:                         
a:=10;

IF a mod 2 = 0 THEN  Write(‘ Chan – Lenh trong IF’);

Write(‘ Lenh ngoài IF’);

  • Kết quả hiện ra màn hình:
Chan – Lenh trong IF

Lenh ngoai IF

b) Dạng đủ

if <điều kiện> then <Câu lệnh1> Else <Câu lệnh2>;…

Nếu điều kiện đúng thì thực hiện <câu lệnh1>, ngoài ra thực hiện <câu lệnh2>; …

  • Ví dụ:
 “Nếu Delta<0 thì phương trình vô nghiệm, ngoài ra phương trình có nghiệm thực”

if delta<0 then write(‘Phuong trinhvo nghiem’)

else write(‘Phuong trinh co nghiem thuc’);

* Ví dụ: Cho biết kết quả của đoạn CT sau:

  • Với a:=11; với a:=10;
IF a mod 2 = 0 THEN 

  Writeln(‘ Chan – Lenh trong IF’)

ELSE

  Writeln(‘ Le – Lenh trong IF’)

Write(‘ Lenh ngoài IF’);

>> Kết quả hiện ra màn hình:

– Với a=11

Le – Lenh trong IF

Lenh ngoai IF

– Với a=10

Chan – Lenh trong IF

Lenh ngoai IF

 2. Câu lệnh ghép

Begin

[<Các câu lệnh>];

End;

3. Một số ví dụ

Ví dụ 1: Tìm nghiêm thực của phương trình: ax+b=0.

B1: Nhập hệ số a,b.

B2: Nếu a<>0 thì Tb phương trình có nghiệm x=-b/a. Kết thúc.

B3: Nếu b=0 thì Tb phương trình có vô số nghiệm. Kết thúc.

B4: Tb phương trình vô nghiệm. Kết thúc.

Readln(a,b);

If a<>0 Then Write(‘PT co nghiem x=’,-b/a)

Else

If b=0 Then Write(‘PT vo so nghiem’)

Else Write(‘PT vo so nghiem’);

Ví dụ 2: Tính DT hình tròn bán kính R nhập từ bàn phím (Đk: R>0)

B1: Nhập hệ số R.

B2: Nếu R>0 thì

       B2.1: S:=3.14*R*R;

       B2.2: Tb kết quả S, Kết thúc.

B3: Nếu R<=0 thì Tb nhập sai bán kính R.

II. CẤU TRÚC LẶP

1. Lặp

(!) Ý nghĩa của việc phải dùng cấu trúc lặp trong lập trình.

– Khi cần thực hiện các công việc lặp đi lặp lại, nếu không có cấu trúc lặp thì việc mô tả thuật toán và viết chương trình bất tiện, nhàm chán.

Vd: Cộng dồn các giá trị một số lần hữu hạn. (thực tế cuộc sống: quyên góp tiền…); Cần nhập thông tin cho rất nhiều đối tượng; Tìm UCLN của 2 số nguyên dương.

Bài toán: Tính tổng: S=1+2+3+4+…+100

2. Lặp với số lần biết trước và câu lệnh for-do

* Dạng lặp tiến: For…Do

Cp: For <biến đếm>:=<giá trị đầu> To <giá trị cuối> Do <câu lệnh>;

– Biến đếm là biến có kiểu đếm được.; – Giá trị đầu<= giá trị cuối.

– Câu lệnh (đơn, ghép..) sau từ khoá do sẽ được thực hiện lần lượt từ biến đếm bằng giá trị đầu đến khi biến đếm bằng giá trị cuối.

– Không vì biến đếm trong lệnh For-do tự động thay đổi giá trị.

Ví dụ 1: Tính S=1+2+3+…+100;

S:=0; For i:=1 to 100 do  S:=S+i; Write(‘Tong la:’,S);

Ví dụ 2: Tính S=1+2+3+…+N; N nguyên dương nhập từ bàn phím.

B1: Nhập N nguyên dương.

B2: Khởi tạo S←0.

B3: Cho ià1 đến N làm: S←S+i;

B4: Xuất tổng: S, kết thúc.

Program Tinh_tong;

Var I,N:byte;

S:Longint;

Begin

Write(‘Nhap N=’); Readln(N);

For i:=1 to N do

S:=S+i;

Write(‘Tong la S=’,S);

Readln;

End.


Ví dụ 3:
Tính tổng các số lẻ từ 1 đến N (N nguyên dương bât kỳ nhập từ bàn phím).

B1: Nhập N nguyên dương.

B2: Khởi tạo S←0.

B3: Cho ig1 đến N làm

Nếu i lẻ thì S←S+i;

B4: Xuất tổng: S, kết thúc.

Program Tinh_tong_le;

Var I,N:byte; S:Longint;

Begin

Write(‘Nhap N=’); Readln(N);

For i:=1 to N do

If I mod 2<>0 Then S:=S+i;

Write(‘Tong la S=’,S);

Readln;

End.

 

 

Ví dụ 4: Lập chương trình tính tổng sau: 

Ví dụ 5: Lập chương trình hiện ra màn hình các kí tự từ ‘A’ >> ’Z’.

Program Hien_kt;

Var kt:Char;

Begin

For kt:=’A’ to ‘Z’ do  Write(kt:2);

Readln;

End.

3. Lặp với số lần chưa biết trước và câu lệnh While…Do

(!) Vẽ lưu đồ và giải thích hoạt động của câu lệnh While…Do?


CP:
While
<Điều kiện> Do

<Lệnh ngoài vòng lặp>;

<Lệnh trong vòng lặp>;

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

+ Lệnh trong vòng lặp, Lệnh ngoài vòng lặp: Là câu lệnh đơn hay ghép trong Pascal.

(!) Câu lệnh ngoài vòng lặp được thực hiện khi <Điều kiện> sai.

Xét bài toán: Tìm UCLN của 2 số nguyên a và b (Thuật toán tìm UCLN theo Ơclid)

(!) Nếu hai số a, b bằng nhau thì UCLN của chúng là chính nó.

Vd: a=12; b=28 => UCLN(a,b)=??

Theo ƠClid làm như sau: g (12,28)=(12,16)=(12,4)=(8,4)=(4,4)=4

Ý tưởng

Khi a<> b thì còn làm Lặp lại:

+ Nếu a> b thay a=a-b

+ Ngược lại thay b=b-a

Đến khi a=b thì dừng và thông báo UCLN=a hoặc b.

– Nếu điều kiện sai câu lệnh ngay sau từ khóa Do không thực hiện lần.

– Nếu điều kiện luôn đúng câu lệnh ngay sau từ khóa Do được thực hiện mãi mãi.

While a<>b Do

If a>b then a:=a-b Else b:=b-a;

Write(‘UCLN=’,a);

4. Cấu trúc lặp Repeat … Until

Cp:  REPEAT  <Câu lệnh>  UNTIL  <Điều kiện>

Ý nghĩa: Đầu tiên lệnh sẽ thực hiện <Câu lệnh> sau đó mới kiểm tra <Điều kiện>. Nếu <Điều kiện> còn sai thì tiếp tục thực hiện <Câu lệnh> và sau đó kiểm tra <Điều kiện> lại. Quá trình cứ thế tiếp tục cho đến khi <Điều kiện> đúng thì kết thúc vòng lặp.

Ví dụ 1: Viết chương trình nhập vào lần lượt các số nguyên, quá trình nhập kết thúc khi nhập số nguyên là 0. Sau đó cho biết tổng các số nguyên đã nhập là bao nhiêu?

Program Tong_repeat;     

Var  x, T : Int64;

     Begin

          T := 0;

          repeat

              write(’Moi ban nhap 1 so bat ky x= :‘);

              readln(n);

              T := T + x;

          until  x = 0;

          writeln(‘Tong cac so vua nhap la : ‘, T);

          readln;

     End.

Ví dụ 2: Sử dụng câu lệnh lặp Repeat … Until để viết chương trình nhập vào số nguyên dương N, kiểm tra xem N có là số nguyên tố hay hợp số?

    Program Kt_snt;

Var  n, i : integer;

     Begin

          write(‘Nhao so nguyen duong N = ‘);

          readln(n);

          i := 1;

          repeat

              i := i + 1;

          until  (n  mod  i = 0) or (i = n) ; {đến khi n chia hết cho i hoặc i=n}

          if  i = n  then  write(n, ‘  la so nguyen to!’)

          else  write(n, ‘ la hop so!’)

          readln;

     End.

Chú ý

– Trong vòng lặp phải có ít nhất 1 câu lệnh có khả năng làm thay đổi <Điều kiện> sau từ khóa UNTIL để đến 1 lúc nào đó thì <Điều kiện> trở thành đúng và vòng lặp kết thúc.

– Nếu sử dụng nhiều lệnh ta vẫn không cần đặt chúng trong cặp từ khóa BEGIN và END (lệnh ghép).

– <Câu lệnh> sẽ được thực hiện ít nhất là 1 lần, nếu <Điều kiện> đúng ngay từ đầu.

– Thường thì ta sử dụng Repeat…Until để kiểm tra dữ liệu nhập cũng như để cho chương trình có thể thực hiện nhiều lần mà không cần chạy lại chương trình.

Ví dụ 3: Viết chương trình tính n!, với n>=0 bất kỳ nhập từ bàn phím.

Program GT_repeat;

Uses crt;

Var  n, i: integer;

gt: int64; tl: char;

 Begin

          repeat

              clrscr;

              repeat

                   write(‘Nhap so nguyen duong N = ‘);

                   readln(n);

              until  n >= 0; {N nhất định phải N>=0}

              gt := 1;

              For  i := 2  to  n  Do

                   gt := gt * i;

              writeln(n , ‘ ! = ’, gt);

              write(‘Ban co muon tiep tuc khong [C/K]?’);

              readln(tl);

          until  upcase(tl) = ‘K’) ; {Người dùng nhập kí tự ‘k’ hay ‘K’, chương trình sẽ kết thúc.}

          readln;

End.

>> Còn nữa…

 

 

 

 

 

 

 

64 BÌNH LUẬN

  1. It’s perfect time to make a few plans for the long run and it’s time to be happy.
    I’ve learn this submit and if I may I wish to recommend you few attention-grabbing things
    or advice. Perhaps you can write subsequent articles regarding this article.
    I want to read more issues approximately it!

  2. Spot on with this write-up, I really believe this site needs much more attention.
    I’ll probably be back again to read through more, thanks for
    the advice!

  3. Thanks for sharing your ideas on this blog.

    In addition, a fantasy regarding the banking companies intentions any time talking about foreclosure is that the
    lender will noot have myy payments. There is a fair bit of time in which the bank will require payments from time to time.
    If you are far too deep in the hole, they are going to commonly require
    that you pay the particular payment in whole. However, i
    am not saying that they will have any sort of payments at all.

    When you annd the standard bank can find a wway to
    work one thing out, your foreclosure method may end.
    However, should you continue to pass up pahments beneath new
    program, the foreclosure process can pick up where it
    was left off.

  4. We’re a bunch of volunteers and starting a new scheme in ourr community.

    Your site offerd uss with helpful information too work on. You have performed
    an impressive task and our whole community can be grateful to you.

  5. If some one needs to be updated with most up-to-date technologies after that he must be
    pay a quick visit this web site and be up to date daily.

  6. Very nice post. I just stumbled upon your weblog and wished to say that
    I’ve truly enjoyed surfing around your blog posts.
    After all I will be subscribing to your rss feed and
    I hope you write again soon!

  7. We’re a group of volunteers and opening a new scheme in our
    community. Your site offered us with valuable info to work on. You have done an impressive job
    and our whole community will be thankful to you.

  8. Please let me know if you’re looking for a article author
    for your blog. You have some really good articles
    and I believe I would be a good asset. If you ever want to take some of the load off,
    I’d love to write some content for your blog in exchange for a
    link back to mine. Please shoot me an email if interested.
    Thanks!

  9. I must thank you for the efforts you have put in penning this blog.
    I’m hoping to see the same high-grade content from
    you in the future as well. In fact, your creative writing abilities has inspired me to
    get my own, personal website now 😉

  10. Heya! I realize this is kind of off-topic however I had to ask.
    Does running a well-established website such as yours
    require a lot of work? I’m brand new to blogging however I do write in my
    journal every day. I’d like to start a blog so I can share my experience and feelings online.
    Please let me know if you have any suggestions or tips
    for brand new aspiring blog owners. Thankyou!

  11. I don’t even know how I finished up right here, but I assumed
    this publish was once good. I do not recognise who you are but certainly
    you’re going to a famous blogger if you aren’t already.
    Cheers!

  12. Greate article. Keep posting such kind of information on your
    site. Im really impressed by it.
    Hi there, You’ve performed a great job. I’ll certainly digg it and for my part suggest
    to my friends. I am sure they’ll be benefited from this
    website.

  13. Next time I read a blog, Hopefully it doesn’t fail me just as much as this particular one.
    After all, I know it was my choice to read, however I actually thought you would probably have something helpful to talk
    about. All I hear is a bunch of complaining about something that you could possibly fix if you weren’t too busy seeking attention.

  14. This is really interesting, You are an overly skilled blogger.

    I’ve joined your feed and stay up for seeking more of your wonderful post.
    Also, I have shared your web site in my social networks

  15. Simply desire to say your article is as astounding. The clearness for your submit is simply nice and that i
    could assume you’re knowledgeable in this subject.

    Fine with your permission let me to take hold of your RSS feed to keep
    up to date with imminent post. Thanks 1,000,000 and please carry
    on the gratifying work.

  16. Hiya very nice web site!! Guy .. Excellent .. Wonderful ..

    I’ll bookmark your site and take the feeds also?
    I am happy to search out a lot of helpful info right here
    in the publish, we want develop more strategies on this
    regard, thanks for sharing. . . . . .

  17. Howdy! I could have sworn I’ve been to this
    site before but after looking at a few of the posts I realized it’s new to me.
    Nonetheless, I’m certainly delighted I came across it and I’ll be
    bookmarking it and checking back regularly!

  18. I have been browsing online more than 2 hours today, yet I never found any interesting
    article like yours. It is pretty worth enough for me.
    Personally, if all website owners and bloggers made good content as you did, the net will be much more useful than ever before.

  19. I do believe all of the concepts you have introduced in your post.
    They’re very convincing and will definitely work.
    Nonetheless, the posts are very quick for starters.
    Could you please lengthen them a bit from next time? Thank you for the post.

  20. I loved as much as you will receive carried out right here.
    The sketch is attractive, your authored subject matter stylish.
    nonetheless, you command get bought an edginess over that you
    wish be delivering the following. unwell unquestionably come more formerly again since exactly the same nearly very
    often inside case you shield this increase.

  21. With havin so much content do you ever run into any problems of plagorism or copyright infringement?

    My blog has a lot of unique content I’ve either written myself or outsourced but it seems a lot of it is popping it up all over
    the web without my agreement. Do you know any methods to help reduce content from being ripped off?
    I’d definitely appreciate it.

  22. After checking out a few of the blog articles on your web page, I really like your way of blogging.
    I book marked it to my bookmark webpage list and
    will be checking back soon. Take a look at my web site too and let me know what you think.

  23. You are so awesome! I do not think I’ve read something like that before.

    So nice to find another person with some original thoughts on this issue.
    Really.. thank you for starting this up. This web site is one thing that’s needed on the web, someone with
    a little originality!

THOÁT KHỎI BÌNH LUẬN

Please enter your comment!
Please enter your name here