Violet
Baigiang

Tìm kiếm theo tiêu đề

Tin tức cộng đồng

5 điều đơn giản cha mẹ nên làm mỗi ngày để con hạnh phúc hơn

Tìm kiếm hạnh phúc là một nhu cầu lớn và xuất hiện xuyên suốt cuộc đời mỗi con người. Tác giả người Mỹ Stephanie Harrison đã dành ra hơn 10 năm để nghiên cứu về cảm nhận hạnh phúc, bà đã hệ thống các kiến thức ấy trong cuốn New Happy. Bà Harrison khẳng định có những thói quen đơn...
Xem tiếp

Tin tức thư viện

Chức năng Dừng xem quảng cáo trên violet.vn

12087057 Kính chào các thầy, cô! Hiện tại, kinh phí duy trì hệ thống dựa chủ yếu vào việc đặt quảng cáo trên hệ thống. Tuy nhiên, đôi khi có gây một số trở ngại đối với thầy, cô khi truy cập. Vì vậy, để thuận tiện trong việc sử dụng thư viện hệ thống đã cung cấp chức năng...
Xem tiếp

Hỗ trợ kĩ thuật

  • (024) 62 930 536
  • 0919 124 899
  • hotro@violet.vn

Liên hệ quảng cáo

  • (024) 66 745 632
  • 096 181 2005
  • contact@bachkim.vn

Bài 1. Máy tính và chương trình máy tính.

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Tham khảo cùng nội dung: Bài giảng, Giáo án, E-learning, Bài mẫu, Sách giáo khoa, ...
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Huỳnh Âu
Ngày gửi: 21h:53' 27-05-2025
Dung lượng: 3.2 MB
Số lượt tải: 11
Số lượt thích: 0 người
Tuesday, May 27, 2025  09:53:30 PM

Các cấu trúc điều khiển
Lệnh đơn giản
Cấu trúc tuần tự
Ghép
Chọn
Lặp
Nhảy
© Lê Minh Hoàng. All Rights Reserved.

Lệnh đơn giản
Lệnh gán
v := e

Lệnh nhập xuất chuẩn
Read/ReadLn
Write/WriteLn

Lời gọi chương trình con
Các lệnh Read/ReadLn, Write/WriteLn được coi là lời gọi chương trình con.
Ngoài các lệnh nhập xuất chuẩn, còn có rất nhiều chương trình con được cung cấp sẵn:
ClrScr, SetLength, Delete,…
2

Giải phương trình bậc nhất
Nhập vào 2 số thực , (), giải phương trình
Chương trình
Khai báo hai biến số thực ,
Nhập 2 biến , từ bàn phím
Đưa ra nghiệm
3

Giải phương trình bậc nhất
{$MODE OBJFPC}
program SolvingLinearEqn;
var
a, b: Real;
begin
Write('Cho a, b = ');
ReadLn(a, b);
WriteLn('Nghiem x = ', -b / a:0:4);
end.
4

Diện tích hình tròn
Nhập vào một số thực
Cho biết diện tích hình tròn đường kích

5

{$MODE OBJFPC}
program CircleArea;
var
d: Real;
begin
Write('Cho duong kich d = ');
ReadLn(d);
WriteLn('Dien tich = ', Pi * Sqr(d / 2):0:4);
end.
6

Cấu trúc tuần tự
S1 ;

S1, S2, …, Sn: Lệnh

S2 ;

Khi viết các lệnh liên tiếp cách nhau bởi dấu chấm


Sn ;

phẩy “;”, chương trình sẽ thực hiện lần lượt các
lệnh theo đúng thứ tự đó.
Dấu chấm phẩy sau lệnh Sn là thừa, nhưng nên có
để dễ dàng bổ sung thêm lệnh
7

Diện tích tam giác
Nhập vào 3 số thực , , là độ dài 3 cạnh của một
tam giác, tính diện tích tam giác đó
Công thức Heron…

8

{$MODE OBJFPC}
program TriangleArea;
var
a, b, c: Real;
p, s: Real;
begin
Write('Cho 3 canh: '); ReadLn(a, b, c);
p := (a + b + c) / 2;
s := Sqrt(p ∗ (p - a) ∗ (p - b) ∗ (p - c));
WriteLn('Dien tich = ', s:0:4);
end.
9

Tính diện tích tam giác
Nhập vào 6 số thực lần lượt là tọa độ 3 điểm: ;
;
Tính diện tích tam giác

10

Lệnh ghép
begin
S1 ;
S2 ;

Sn ;
end;

Có những nơi trong chương trình không cho phép viết nhiều
hơn 1 lệnh, khi đó để thực hiện nhiều lệnh, cần phải “gói”
chúng thành một lệnh ghép
Lệnh ghép bắt đầu bằng begin, kết thúc bằng end, giữa khối
là các lệnh thành phần ngăn cách nhau bởi dấu chấm phẩy
Dấu “;” sau end không phải thành phần của lệnh ghép (dùng
để ngăn cách lệnh ghép với lệnh kế tiếp và không cần thiết
nếu là lệnh ghép là lệnh cuối cùng).
11

Lệnh chọn if…then…
if C
then
S;

C: Điều kiện (Biểu thức logic)
S: Một lệnh
Khi gặp cấu trúc if…then, máy sẽ kiểm tra điều kiện
C:
C = True, máy sẽ thực hiện lệnh S
C = False, máy không thực hiện lệnh S

Dấu “;” cuối cùng không phải thành phần của lệnh
if…then…
12

Lệnh chọn if…then…else…
if C
then
S1
else
S2 ;

C: Điều kiện (Biểu thức logic)
S1, S2: Một lệnh
Khi gặp cấu trúc if…then…else…, máy sẽ kiểm tra điều kiện C:
C = True, máy thực hiện lệnh S1
C = False, máy thực hiện lệnh S2

Dấu “;” cuối cùng không phải thành phần của lệnh if…then…else
Trước else không bao giờ có dấu “;”
Nếu có nhiều cấu trúc if…then…else lồng nhau, else luôn được
gắn với if chưa có else gần nó nhất.
13

Giải phương trình bậc 2
Nhập vào 3 số thực và giải phương trình:
Mô tả thuật toán bằng ngôn ngữ tự nhiên
Chuyển ngôn ngữ tự nhiên thành chương trình
Pascal
14

Giải phương trình bậc 2
Nhập , b và c.
Tính
Nếu , thông báo phương trình vô nghiệm
Nếu không…
Nếu , đưa ra nghiệm kép
Nếu không, thông báo 2 nghiệm
15

{$MODE OBJFPC}
program SolvingQuadraticEquation;
var
a, b, c, Delta: Real;
begin
Write('a, b, c = '); ReadLn(a, b, c);
Delta := Sqr(b) – 4 ∗ a ∗ c; //b2 – 4ac
if Delta < 0 then WriteLn('Vo nghiem!')
else //Δ ≥ 0
if Delta = 0 then WriteLn('x = ', -b / (2 ∗ a):0:4)
else
begin
WriteLn('x1 = ', (-b + Sqrt(Delta)) / (2 ∗ a):0:4);
WriteLn('x2 = ', (-b - Sqrt(Delta)) / (2 ∗ a):0:4);
end;
end.
16

Nhiều cấu trúc if…else lồng nhau
Nhập vào số nguyên
Nếu là số chính phương thì thông báo là số chính
phương
Nếu là số âm thì thông báo là số âm

Kiểm tra số là số chính phương:
17

Chỉ ra chỗ sai
{$MODE OBJFPC}
program SquaredNumber;
var
n: Integer;
begin
ReadLn(n);
if n >= 0 then
if Sqr(Round(Sqrt(n))) = n then
WriteLn(n, ' la so chinh phuong')
else
WriteLn(n, ' la so am');
end.
18

Chữa lỗi
{$MODE OBJFPC}
program SquaredNumber;
var
n: Integer;
begin
ReadLn(n);
if n >= 0 then
begin
if Sqr(Round(Sqrt(n))) = n then
WriteLn(n, ' la so chinh phuong');
end
else
WriteLn(n, ' la so am');
end.

19

Lệnh chọn case (1)
case e of
k1: S1;
k2: S2;

kn: Sn
end;

e: Biểu thức kiểu đếm được: Số nguyên, ký tự, logic, liệt kê, đoạn con
ki: Nhóm hằng cùng kiểu với e
Mỗi nhóm hằng gồm các hằng cách nhau bởi dấu phẩy
Có thể dùng ký pháp a..b để chỉ các hằng nằm trong phạm vi từ a đến b
Các nhóm hằng đôi một rời nhau (không có hằng chung)

Si: Một lệnh
Khi gặp lệnh case, máy tính giá trị biểu thức e…
Nếu giá trị e thuộc nhóm hằng ki, máy sẽ thực hiện lệnh Si.
Nếu giá trị e không thuộc nhóm hằng nào, máy bỏ qua lệnh case.

Dấu “;” cuối cùng không phải thành phần của lệnh case.
20

Thời gian biểu
Thời gian biểu của học sinh X
6:00: ăn
7:00: đi học
11:00: ăn
12:00: ngủ

Giờ ăn 6, 11, 19
Giờ học 7, 8, 9, 10, 13, 14, 15, 16
Giờ ngủ 12, 23, 0, 1, 2, 3, 4, 5

13:00: đi học

Giờ chơi thể thao 17, 18

17:00: chơi thể thao

Giờ đọc sách 20, 21, 22

19:00: ăn
20:00: đọc sách
23:00: ngủ

Chương trình
24 lệnh if…

Nhập vào một giờ h (số nguyên ∈ 0…23), cho

5 lệnh if…

biết học sinh X đang làm gì.

1 lệnh case…
21

{$MODE OBJFPC}
program TimeTable;
var h: Integer;
begin
Write('h = '); ReadLn(h);
Write('He is ');
case h of
6, 11, 19: WriteLn('eating');
7..10, 13..16: WriteLn('learning');
12, 23, 0..5: WriteLn('sleeping');
17, 18: WriteLn('playing sport');
20..22: WriteLn('reading books');
end;
end.

Giờ ăn
6, 11, 19

Giờ học
7, 8, 9, 10, 13, 14, 15, 16

Giờ ngủ
12, 23, 0, 1, 2, 3, 4, 5

Giờ chơi thể thao
17, 18

Giờ đọc sách
20, 21, 22
22

Lệnh chọn case (2)
case e of
k1: S1;
k2: S2;

kn: Sn;
else Sn+1
end;

e: Biểu thức kiểu đếm được: Số nguyên, ký tự, logic, liệt kê, đoạn con
ki: Nhóm hằng cùng kiểu với e
Mỗi nhóm hằng gồm các hằng cách nhau bởi dấu phẩy
Có thể dùng ký pháp a..b để chỉ các hằng nằm trong phạm vi từ a tới b
Các nhóm hằng đôi một rời nhau (không có hằng chung)

Si: Một lệnh
Khi gặp lệnh case, máy tính giá trị biểu thức e…
Nếu giá trị e thuộc nhóm hằng ki, máy sẽ thực hiện lệnh Si.
Nếu giá trị e không thuộc nhóm hằng nào, máy thực hiện lệnh S n+1

Dấu “;” cuối cùng không phải thành phần của lệnh case.
23

Tính thứ trong tuần
Nhập vào ngày (d), tháng (m), năm(y)
Cho biết ngày d/m/y là thứ mấy?
Công thức Zeller…

24

Tháng 1 và 2 coi như tháng 13 và 14 năm trước
18/2/2010 = 18/14/2009

Mỗi thế kỷ gồm 100 năm, các năm trong thế kỷ
đánh số từ 0 tới 99: Thế kỷ 0: [0…99], Thế kỷ 1:
[100…199], …, Thế kỷ 20: [2000, 2099]
: Số hiệu thế kỷ

if m < 3 then
begin
m := m + 12;
y := y - 1;
end;
c := y div 100;
k := y mod 100;

: Số hiệu năm trong thế kỷ

0: Saturday, 1: Sunday, 2: Monday, …

25

{$MODE OBJFPC}
program DayOfWeek;
var
y, m, d: Integer;
c, k, DOW: Integer;
begin
Write('Date?(d/m/y): ');
ReadLn(d, m, y);
if m < 3 then
begin
m := m + 12;
y := y - 1;
end;
c := y div 100;
k := y mod 100;

DOW :=
d +
26 * (m + 1) div 10 +
k + k div 4 +
c div 4 + 5 * c;
case DOW mod 7 of
0: WriteLn('Saturday');
1: WriteLn('Sunday');
2: WriteLn('Monday');
3: WriteLn('Tuesday');
4: WriteLn('Wednesday');
5: WriteLn('Thursday');
6: WriteLn('Friday');
end;
end.
26

Năm can chi
10 can: Giáp, Ất, Bính, Đinh, Mậu, Kỷ, Canh, Tân, Nhâm, Quý
12 chi: Tí, Sửu, Dần, Mão, Thìn, Tị, Ngọ, Mùi, Thân, Dậu,
Tuất, Hợi
Xác định năm can chi ứng với năm dương lịch
2000 = Canh Thìn
2015 = Ất Mùi
27

Giáp

Bính



Quý

Đinh

Hợi

Thìn

Nhâm

M ậu

Tuất

Tỵ

Kỷ

Dậu

Tân

Ất

Canh

Sửu

Thân

Dần

Mùi

Mão

Ngọ

2000
2002
1999
2001
28

Năm can chi
Nhập vào một năm y (dương lịch)
Xác định năm can chi tương ứng
y mod 10
Can

4
Giáp

y mod 12
Chi

4


5
Ất

6
7
Bính Đinh

5
6
7
8
Sửu Dần Mão Thìn

8
Mậu
9
Tỵ

9
Kỷ

0
Canh

1
2
3
Tân Nhâm Quý

10
11
0
1
2
3
Ngọ Mùi Thân Dậu Tuất Hợi

29

{$MODE OBJFPC}
program CanChi;
var
y: Integer;
begin
Write('Year: '); ReadLn(y);
case y mod 10 of
4: Write('Giap');
5: Write('At');
6: Write('Binh');
7: Write('Dinh');
8: Write('Mau');
9: Write('Ky');
0: Write('Canh');
1: Write('Tan');
2: Write('Nham');
3: Write('Quy');
end;

Write(' ');
case y mod 12 of
4: WriteLn('Ti');
5: WriteLn('Suu');
6: WriteLn('Dan');
7: WriteLn('Mao');
8: WriteLn('Thin');
9: WriteLn('Ty');
10: WriteLn('Ngo');
11: WriteLn('Mui');
0: WriteLn('Than');
1: WriteLn('Dau');
2: WriteLn('Tuat');
3: WriteLn('Hoi');
end;
end.
30

Lệnh lặp repeat
repeat
S1 ;
S2 ;

Sn ;

C: Điều kiện thoát (Biểu thức logic)
S1, S2,…, Sn: Các lệnh tuần tự
Máy sẽ thực hiện lặp đi lặp lại dãy lệnh S1, S2, .., Sn cho tới khi
điều kiện C đúng
Dấu “;” sau Sn là thừa
Dấu “;” cuối cùng không phải thành phần của lệnh repeat
Dãy lệnh S1, S2, …, Sn sẽ được thực hiện ít nhất 1 lần (Điều kiện

until C; thoát C được kiểm tra sau mỗi lượt lặp)

31

Tách chữ số
Nhập vào một số nguyên dương . Cho biết tổng các chữ số trong biểu diễn thập
phân của
Ý tưởng
Khởi tạo biến
Tách từng chữ số của , từ hàng đơn vị lên, khi mỗi chữ số được tách ra, tăng thêm đơn vị.

Thuật toán
Tách chữ số hàng đơn vị:
Lặp lại với số cho tới khi

32

ReadLn(n)
Sum := 0;

{$
MO
DE
OB
JF
PC
}
pr
og
ra
m
Di
gi
ts
;
va
r
n:
In
t6
4;
d,
Su
m:
In
te
ge
r;
be
gi
n
Re
ad
Ln
(n
);
Su
m
:=
0;
re
pe
at

repeat
d := n mod 10;
n := n div 10;

d
:=
n
mo
d
10
;
n
:=
n
di
v
10
;

Su
m
:=
Su
m
+
d;
un
ti
l
n
=
0;
Wr
it
eL
n(
'T
on
g
CS
=
',
Su
m)
;
en
d.

Sum := Sum + d;
until n = 0;
WriteLn('Tong CS = ',
Sum)

33

ReadLn(n);
Sum := 0;

n =

1234
123

d =

4

repeat
d := n mod 10;
n := n div 10;
Sum := Sum + d;
until n = 0;
WriteLn('Tong CS = ',
Sum)

Sum
=

0
4

ReadLn(n);
Sum := 0;

n =

123
12

d =

4
3

repeat
d := n mod 10;
n := n div 10;
Sum := Sum + d;
until n = 0;
WriteLn('Tong CS = ',
Sum)

Sum
=

4
7

ReadLn(n);
Sum := 0;

n =

12
1

d =

3
2

repeat
d := n mod 10;
n := n div 10;
Sum := Sum + d;
until n = 0;
WriteLn('Tong CS = ',
Sum)

Sum
=

7
9

ReadLn(n);
Sum := 0;

n =

1
0

d =

2
1

repeat
d := n mod 10;
n := n div 10;
Sum := Sum + d;
until n = 0;
WriteLn('Tong CS = ',
Sum)

Sum
=

9
10

Thực hiện chương trình nhiều lần
{$MODE OBJFPC}
program …;
var
Answer: Char;
begin
repeat
…//Chương trình
Write('Bạn muố
n làm tiế
p không C/K?');
ReadLn(Answer);
until (Answer = 'k') or (Answer = 'K');
end.
38

Lệnh lặp while

while C
do
S;

C: Điều kiện lặp (Biểu thức logic)
S: Một lệnh
Máy sẽ thực hiện lặp đi lặp lại lệnh S chừng nào điều
kiện C đúng
Dấu “;” cuối cùng không phải thành phần của lệnh
while
Nếu C sai ngay từ đầu, lệnh S sẽ không được thực hiện
(điều kiện lặp C được kiểm tra trước mỗi lượt lặp)
39

Thuật toán Euclide
Nhập vào hai số tự nhiên không đồng thời bằng 0.
Cho biết ước số chung lớn nhất của và
Thuật toán Euclide
Nhận vào
Lặp chừng nào
Tính
Thay bởi

Giá trị sau vòng lặp là USCLN của hai số ban đầu.
40

{$MODE OBJFPC}
program GCD;
var a, b, r: Integer;
begin
Write('a, b = '); ReadLn(a, b);
Write('GCD(', a, ', ', b, ') =
');
while b <> 0 do
begin
r := a mod b;
a := b;
b := r;
end;
WriteLn(a);
end.
41

{$MODE OBJFPC}
program GCD;
var a, b, r: Integer;
begin
Write('a, b = '); ReadLn(a, b);
Write('GCD(', a, ', ', b, ') =
');
while b <> 0 do
begin
r := a mod b;
a := b;
b := r;
end;
WriteLn(a);
end.

a

100

b

128

r

100

GCD(100, 128) =

{$MODE OBJFPC}
program GCD;
var a, b, r: Integer;
begin
Write('a, b = '); ReadLn(a, b);
Write('GCD(', a, ', ', b, ') =
');
while b <> 0 do
begin
r := a mod b;
a := b;
b := r;
end;
WriteLn(a);
end.

a

128

b

100

r

100
28

GCD(100, 128) =

{$MODE OBJFPC}
program GCD;
var a, b, r: Integer;
begin
Write('a, b = '); ReadLn(a, b);
Write('GCD(', a, ', ', b, ') =
');
while b <> 0 do
begin
r := a mod b;
a := b;
b := r;
end;
WriteLn(a);
end.

a

100

b

28

r

28
16

GCD(100, 128) =

{$MODE OBJFPC}
program GCD;
var a, b, r: Integer;
begin
Write('a, b = '); ReadLn(a, b);
Write('GCD(', a, ', ', b, ') =
');
while b <> 0 do
begin
r := a mod b;
a := b;
b := r;
end;
WriteLn(a);
end.

a

28

b

16

r

16
12

GCD(100, 128) =

{$MODE OBJFPC}
program GCD;
var a, b, r: Integer;
begin
Write('a, b = '); ReadLn(a, b);
Write('GCD(', a, ', ', b, ') =
');
while b <> 0 do
begin
r := a mod b;
a := b;
b := r;
end;
WriteLn(a);
end.

a

16

b

12

r

12
4

GCD(100, 128) =

{$MODE OBJFPC}
program GCD;
var a, b, r: Integer;
begin
Write('a, b = '); ReadLn(a, b);
Write('GCD(', a, ', ', b, ') =
');
while b <> 0 do
begin
r := a mod b;
a := b;
b := r;
end;
WriteLn(a);
end.

a

12

b

4

r

4
0

GCD(100, 128) =

{$MODE OBJFPC}
program GCD;
var a, b, r: Integer;
begin
Write('a, b = '); ReadLn(a, b);
Write('GCD(', a, ', ', b, ') =
');
while b <> 0 do
begin
r := a mod b;
a := b;
b := r;
end;
WriteLn(a);
end.

a

4

b

0

r

0

GCD(100, 128) =

4

Đọc và phân tích chương trình sau
{$MODE OBJFPC}
program GCD;
var
a, b: Integer;
begin
Write('a, b = '); ReadLn(a, b);
Write('GCD(', a, ', ', b, ') = ');
while a <> b do
if a > b then a := a – b
else b := b – a;
WriteLn(a);
end.
49

Lệnh lặp for…to…do
for i := e to f do
S;
i: Biến kiểu đơn giản đếm được; e, f: Biểu thức tương thích kiểu với i; S: Một lệnh
Máy tính giá trị a := e và b := f, cho i chạy tăng qua tất cả các giá trị từ a tới b, với mỗi giá trị i đó, máy thực
hiện lệnh S
Nếu a > b, lệnh S bị bỏ qua
Nếu a ≤ b, lệnh S thực hiện b – a + 1 lần (nếu không có lệnh break) cho dù lệnh S có làm thay đổi giá trị của
biểu thức e hoặc f
Lệnh S không được phép làm thay đổi giá trị biến i
Giá trị của biến i sau vòng lặp for phải được coi là không xác định (rác)
50
 
Gửi ý kiến