Tài liệu Nhập môn lập trình - Basic Logics - Võ Quang Hoàng Khang: NHẬP MÔN LẬP TRÌNH
Basic Logics
Logic Constructs
Programming Style
Walkthroughs
NHẬP MÔN LẬP TRÌNH
Ôn tập
• Biến là một tên tham chiếu đến một vị trị trong bộ 
nhớ.
• Một kiểu dữ liệu xác định: dữ liệu lưu trữ như thế 
nào và các toán tử thao tác tương ứng.
• 4 kiểu dữ liệu cơ bản trong C: int, char, float, 
double
• Dữ liệu lưu trữ dưới dạng nhị phân.
• Khai báo biến trong C: type var [=initialValue];
• Tên biến phải bắt đầu bằng ký tự hoặc ‘_’, 
• Tên định danh không trùng từ khóa trong C.
2Basic Logics
NHẬP MÔN LẬP TRÌNH
Mục tiêu
• Làm thế nào để viết 1 chương trình C cấu 
trúc logic
• Khi viết chương trình C, những điều nên làm 
là gì? Programming styles
• Làm thế để có thể hiểu một chương trình? 
Walkthroughs
3Basic Logics
NHẬP MÔN LẬP TRÌNH
Nội dung
1- Các cấu trúc logic
2- Programming Styles
3- Walkthroughs
4- Bonus – Redirect a Program ( a technique is 
used in the ACM Contest)
4Basic Logics
NHẬP MÔN LẬP TRÌNH
1- Logic Constructs
– Lập tr...
                
              
                                            
                                
            
 
            
                 52 trang
52 trang | 
Chia sẻ: putihuynh11 | Lượt xem: 925 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang mẫu tài liệu Nhập môn lập trình - Basic Logics - Võ Quang Hoàng Khang, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
NHẬP MÔN LẬP TRÌNH
Basic Logics
Logic Constructs
Programming Style
Walkthroughs
NHẬP MÔN LẬP TRÌNH
Ôn tập
• Biến là một tên tham chiếu đến một vị trị trong bộ 
nhớ.
• Một kiểu dữ liệu xác định: dữ liệu lưu trữ như thế 
nào và các toán tử thao tác tương ứng.
• 4 kiểu dữ liệu cơ bản trong C: int, char, float, 
double
• Dữ liệu lưu trữ dưới dạng nhị phân.
• Khai báo biến trong C: type var [=initialValue];
• Tên biến phải bắt đầu bằng ký tự hoặc ‘_’, 
• Tên định danh không trùng từ khóa trong C.
2Basic Logics
NHẬP MÔN LẬP TRÌNH
Mục tiêu
• Làm thế nào để viết 1 chương trình C cấu 
trúc logic
• Khi viết chương trình C, những điều nên làm 
là gì? Programming styles
• Làm thế để có thể hiểu một chương trình? 
Walkthroughs
3Basic Logics
NHẬP MÔN LẬP TRÌNH
Nội dung
1- Các cấu trúc logic
2- Programming Styles
3- Walkthroughs
4- Bonus – Redirect a Program ( a technique is 
used in the ACM Contest)
4Basic Logics
NHẬP MÔN LẬP TRÌNH
1- Logic Constructs
– Lập trình có cấu trúc
– Các cấu trúc logic
• Cấu trúc tuần tự - Sequence constructs
• Cấu trúc chọn - Selection constructs (1/2, 1/n)
• Cấu trúc lặp - Iteration constructs
5Basic Logics
NHẬP MÔN LẬP TRÌNH
1.1- Structured Programming 
• Cấu trúc của code chương trình nên tổ chức 
theo cách có thể hiểu được, kiểm chứng và 
dễ dàng chỉnh sửa.
• sử dụng các cấu trúc logic đơn giản, mỗi 
cấu trúc có một điểm bắt đầu và một điểm 
kết thúc.
• Bước đầu tiên để phát triển một chương trình 
là sử dụng DESIGN
– pseudo-coding hoặc
– flow charting 
6Basic Logics
NHẬP MÔN LẬP TRÌNH
Structured Programming: Pseudo-code
• Ví dụ: Tính giá trị tuyệt đối của một số nguyên 
được nhập từ bàn phím.
 Nhắc người dùng nhập một giá trị số nguyên
 Nhận một số nguyên từ người dùng và lưu trữ vào x
 Nếu x là số am thì x = -x
 Hiển thị x 
7Basic Logics
NHẬP MÔN LẬP TRÌNH
Structured Programming: Flowcharting
• Describe the flow of a program unit symbolically
8Basic Logics
NHẬP MÔN LẬP TRÌNH
Flowcharting
• Ví dụ:
9Basic Logics
NHẬP MÔN LẬP TRÌNH
1.2- Cấu trúc tuần tự
• Một dãy tuần tự các lệnh đơn hoặc khối lệnh
• Simple Statements
expression ;
• Code Blocks
– Một khối lệnh là tập hợp các lệnh được đặt trong cặp 
móc nhọn
{ 
statement 
... 
statement 
}
10Basic Logics
NHẬP MÔN LẬP TRÌNH
1.3- Cấu trúc chọn
Select 1/2 Select 1/n
if
if  else
If  else if . else
? : (operator)
switch
Condition 
?
Operation 1 Operation 2
TRUE FALSE
Integral
expression
Op1 Op2 Op3 Op4
c1 c2 c3 default
11Basic Logics
NHẬP MÔN LẬP TRÌNH
Selection Constructs: if  else 
if (condition)
{ statements
}
if (condition)
{ statements
}
else
{ statements
}
12Basic Logics
NHẬP MÔN LẬP TRÌNH
Selection Constructs: if  else 
if (condition)
{ statements
}
else
{ statements
}
Trình biên dịch không thể 
xác định câu lệnh if trước 
câu lệnh else.
13Basic Logics
NHẬP MÔN LẬP TRÌNH
Selection Constructs: if  else 
if (condition 1)
{ statements
}
else if (condition2)
{ statements
}
else
{ statements
}
Nested if
 Mua N T-shirts với quảng cáo: 
 N<=3: 120000$/item
 From 4th to 6th: 90000$/item
 From 7th to 10th: 85000$/item
 From 11th : 70000$/item
 Mô tả biểu thức tính tiền phải trả.
N: số áo T-shirts mua, t: tiền phải trả.
if (N <=3) t = N*120000 ;
else if (N<=6) t= 3*120000 + (N-3) * 90000;
else if (N<=10) 
t= 3*120000 + 3*90000 + (N-6)*85000;
else 
t= 3*120000 + 3*90000 + 4*85000 + (N-10)*70000;
Begin
N,t  int
Accept N
Compute t
Print out t
End
14Basic Logics
NHẬP MÔN LẬP TRÌNH
Selection Constructs: if  else 
if (condition 1)
{ statements
}
else if (condition2)
{ statements
}
else
{ statements
}
Begin
N,t  int
Accept N
Compute t
Print out t
End
950 1250 1350 1550
100 150 200 Number of kwhs 
prices
 Tương tự, mô tả biểu thức
tính giá trị sẽ trả khi chúng ta
sử dụng điện năng.
 Implement it to a program.
15Basic Logics
NHẬP MÔN LẬP TRÌNH
Selection Constructs: Dangling Else
• Ambiguity may arise in the case of nested if else constructs.
Sử dụng { } để xác định rõ rang các 
câu lệnh 
?
?
16Basic Logics
NHẬP MÔN LẬP TRÌNH
Selection Constructs: toán tử ? :
(condition) ? True_Value : False_Value 
17Basic Logics
NHẬP MÔN LẬP TRÌNH
Selection Constructs: 
The switch statement
switch (variable or expression) 
{ 
case constant :
statement(s); 
break; 
case constant :
statement (s);
break; 
default: 
statement (s);
} 
char / int
Nếu thiếu break, lệnh tiếp theo sẽ được thực hiện 
cho đến khi gặp break hoặc tất cả các lệnh 
trong switch được thực hiện
Each case is an entry of a selection
Integral
expression
Op1 Op2 Op3 Op4
c1 c2 c3 default
18Basic Logics
NHẬP MÔN LẬP TRÌNH
Selection Constructs: 
The switch statement
If input is 8, what are outputs?
a) 200000 , 2
b) 300000, 3
c) 0, 0
d) 1000000, 4
e) 1500000, 10
f) None of the others
If input is 7, what are outputs?
19Basic Logics
NHẬP MÔN LẬP TRÌNH
Selection 
Constructs: 
switch
Viết chương trình cho
phép người dùng nhập
một biểu thức đơn
giản có chứa một
trong bốn toán tử +, -,
*, / sau đó in kết quả
ra màn hình.
Input format: 
num1 operator num2,
Example: 4*5
Analysis
double num1, num2; char op
result  double result
Begin
Accept num1, op, num2  “%lf%c%lf”
switch (op)
{ case ‘+’ : result = num1 + num2;
print out result;
break;
case ‘-’ : result = num1 - num2;
print out result;
break;
case ‘*’ : result = num1 * num2;
print out result;
break;
case ‘/’ : if ( num2==0)
print out “Divide by 0 “
else
{ result = num1 / num2;
print out result;
}
break;
default: print out “Op is not supported”
}
End 
Implement it.
20Basic Logics
NHẬP MÔN LẬP TRÌNH
1.4- Iteration (loop) Constructs 
• Loop/Iteration: Một số lệnh được thực hiện lặp đi lặp lại
• Structure of a loop:
– Khởi tạo - Initial block.
– Điều kiện - Condition.
– Các tác vụ trong mỗi lần thực hiện
• Các loại lặp: lặp xác định (fixed loops), variable loops
• Các cấu trúc lặp: 
while 
do while 
for
21Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration
Xác định một vòng lặp:
• Tính S= 1+2+3+4+5+6+7+  + 100
Some addition are performed  Loop
• Tổng của một số con số được nhập cho đến 
khi người dùng nhập vào 0. 
Accept and add numbers  Loop
22Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration
Xác định vòng lặp cho một biểu thức:
Left side  Initial block
Right side  Condition
Hoạt động và chuẩn bị cho lần lặp tiếp theo: 
Các nhiệm vụ trong mỗi lần lặp
S=1+2+3+4+ + 100
 S=0+1+2+3+4+ + 100
S=1*2*3*4* * 100
S=1*1*2*3*4* * 100
S=0
i=1
i<=100(1) S=S+i;
(2) i=i+1;
S=1
i=1
i<=100(1) S=S*i;
(2) i=i+1;
S=1
i=2
23Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration
S= 0 , n<=0
1 + 3 + 5 + + n, n is odd
2 + 4 + 6 +  + n, n is even
S= 1 + 1/10 + 1/ 21 + 1/32 +  + 1 /nn-1
S= 0 , n<=0
n + (n-2) + (n-4) +  + 0
Initial value:
S = 0
i = (n%2==1)? 1: 2;
Condition i <=n
Tasks: S += i;
i+=2;
Initial value:
S = 0;
i = n;
Condition i>0
Tasks: S += i;
i -=2;
Initial value:
S = 1.0;
i = 1;
Condition i <=n
Tasks: S += 1.0/ pow ( i, i-1 );
i = i +1;
24Basic Logics
math.h
NHẬP MÔN LẬP TRÌNH
Iteration: for statement
• for ( InitBlock; Condition; Task2) Task1;
• for ( Init1, Init2; Condition ; Task1, Task2);
• InitBlock;
for ( ; Condition ; Task2) Task1;
• InitBlock;
for ( ; Condition ;)
{ Task1;
Task2;
}
InitBlock
Condition?
Task1
Task2
yes
no
Điều kiện sẽ được kiểm tra trước khi thực 
hiện nhiệm vụ.
25Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration
• Write a program that will 
print out the ASCII table.
ASCII code : 0  255
Initialize: int code =0
Condition: code <256
Task:
Print the code using 4 format: %c, %d, %o, %X
code = code +1
26Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration
• Write a program that will calculate 
1+2+3++n.
Accepted variable: int n
Sum 1 .. N  int sum
Algorithm
Accept n
Loop:
Initialize i=1, sum=0
Condition i<=n
Tasks: sum += i; i++;
Print out sum
27Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration: while/dowhile statements
/* Initializations */
while (condition)
{ statements;
}
InitBlock
Condition?
Task1
Task2
yes
no
Điều kiện sẽ được kiểm tra sau khi các 
nhiệm vụ được thực hiện.
/* Initializations */
do
{ statements;
}
while (condition) ;
InitBlock
Condition?
Task1
Task2
yes no
Điều kiện sẽ được kiểm tra trước khi 
thực hiện nhiệm vụ.
28Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration: while/dowhile statements
• Write a program that will print 
out the ASCII table.
ASCII code : 0  255
Initialize: code =0
Condition: code <256
Task:
Print the code using 4 formats: %c, %d, %o, %X
code = code +1
29Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration
• Viết một chương trình sẽ in ra tổng số các số
nguyên được nhập vào bởi người dùng. Việc
nhập sẽ dừng nếu người dùng nhập vào giá trị 0.
Nouns: inputted integer  int x, 
sum of integers  int sum
Tasks (algorithm)
Begin
sum =0
do
{ accept x;
sum += x;
}
while (x!=0);
Print out sum
End
Implement it by 
yourself.
30Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration
• Viết một chương trình cho phép người dùng nhập vào một số 
ký tự cho đến khi nhấn phím ENTER (mã 10). Chương trình 
sẽ in ra số chữ số, số chữ cái, số phím khác đã được nhập. 
Accept a character: c=getchar();
Nouns: 
character inputted  char c, Number of digits  int noDigits
Number of letters  noLetters, Number of other keys  noOthers
#define ENTER 10
Algorithm
Begin
noDigits = noLetters = noOthers = c= 0
printf(“Enter a string:”);
While (c!=ENTER)
{ accept c;
if ( c>=‘0’ && c <=‘9’) noDigits++;
else if ( (c>=‘a’ && c =‘A’ && c <=‘Z’) ) noLetters++;
else noOthers++;
}
Print out noDigits, noLetters, noOthers
End
Implement 
it by 
yourself.
The while statement is 
intentionally used. So, 
c=0 is assigned and the 
condition c!=ENTER is 
evaluated to TRUE
31Basic Logics
Input form:
abc1234fGH+-*/?(ENTER)
NHẬP MÔN LẬP TRÌNH
Iteration: Break/ Bypass a loop
0 1 2 3 4 5
0 1 2 3 4 5
32Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration Constructs: Flags
• To improve readability, programmers advocated:
– the use of whitespace to identify the logical structure of 
the code 
– the abolition of all goto statements 
– the abolition of all continue statements 
– the abolition of all break statements, except with switch
• A technique for avoiding jumps is called 
flagging. A flag is a variable that keeps track of a 
true or false state.
33Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration Constructs: Flags
Nên dùng if thay thế cho continue
34Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration Constructs: Flags
Loop vô hạn
35Basic Logics
NHẬP MÔN LẬP TRÌNH
Iteration Constructs: Flags
No flag is 
used.
A flag is used.
36Basic Logics
NHẬP MÔN LẬP TRÌNH
2- Phong cách lập trình - Programming Styles
– Thói quen trong lập trình
• Một chương trình viết tốt giúp các lập trình 
viên khác có thể dễ dàng hiểu nó. Coding 
style là phải rõ ràng và nhất quán.
Đề xuất
– Naming: tên
– Indentation: thụt lề
– Comments: ghi chú
– Magic Values 
– General Guidelines: hướng dẫn chung
37Basic Logics
NHẬP MÔN LẬP TRÌNH
Programming Styles: Naming
• Sử dụng các tên có tính mô tả để làm rõ ý nghĩa của 
chúng
• Sử dụng các tên mô tả hoàn chỉnh để nhận dạng, 
tránh tên bí ẩn
• Ưu tiên DANH TỪ cho tên biến
• Dùng tên biến ngắn - studentName chứ không phải
NameOfAStudent
• Các tên chỉ số rất ngắn – sử dụng trong là ký hiệu 
toán học
38Basic Logics
NHẬP MÔN LẬP TRÌNH
Programming Styles: Indentation
• Thụt lề phần thân của cấu trúc khi được nhúng 
trong một cấu trúc khác. For example, 
•Use in-line 
opening braces or 
start opening 
braces on a 
newline but don't 
mix the two 
styles.
39Basic Logics
NHẬP MÔN LẬP TRÌNH
Programming Styles: Comment
• Use comments to declare what is done, rather than 
describe how it is done.
• Comments introduce what follows.
• Keep them brief and avoid decoration.
40Basic Logics
NHẬP MÔN LẬP TRÌNH
Programming Styles: Magic Values
• Đây có thể là hằng số toán học, thuế suất, giá trị mặc 
định hoặc tên.
• Để cải thiện khả năng đọc, chỉ định các tên tượng trưng 
cho các giá trị Magic Values này và sử dụng trong suốt 
đoạn mã.
• Sử dụng chỉ thị
#define SYMBOLIC_NAME value
41Basic Logics
NHẬP MÔN LẬP TRÌNH
Programming Styles: Guidelines
• Chiều dài dòng tối đa 80 ký tự - cả comment và code
• Tránh sử dụng biến toàn cục (global variables)
• Chọn loại dữ liệu cho các biến một cách khôn ngoan và 
cẩn thận
• Khởi tạo giá trị cho biến nếu cần thiết 
• Nếu giá trị ban đầu là một phần của một thuật toán, sử 
dụng một câu lệnh gán riêng.
• Tránh dung goto, continue, break trừ trong lệnh 
switch. 
• Sử dụng một khoảng trắng bên cạnh một toán tử (phép 
toán).
• Sử dụng dấu ngoặc mở trên cùng dòng hoặc bắt đầu 
trên một dòng mới, nhưng không kết hợp hai kiểu.
42Basic Logics
NHẬP MÔN LẬP TRÌNH
Programming Styles: Guidelines
• Tránh các thuật toán kỳ quặc có thể hiệu quả nhưng 
rất khó đọc
• Thêm các ghi chú tại vị trí mã đã được tinh chỉnh 
để thực hiện hiệu quả
• Loại bỏ các biến không được sử dụng
43Basic Logics
NHẬP MÔN LẬP TRÌNH
3- Walkthroughs
• Hiểu code là một kỹ năng của lập trình.
• Để hiểu được mã, chúng ta nên biết làm thế 
nào mã thực hiện.
• Để biết cách thực thi mã lệnh, chúng ta nên 
thực hiện từng lệnh.
44Basic Logics
NHẬP MÔN LẬP TRÌNH
Walkthroughs: Demo.
a b a+b c
5 2 7 1
6 4 10 9
7 6 13 17
8 8 18 25
9 10 19 33
10 12 22 41
Output
41
45Basic Logics
NHẬP MÔN LẬP TRÌNH
Walkthroughs: Demo.
int n, i, S=0;
scanf(“%d”, &n);
for (i=1; i<=n; i+=3)
if (i%2!=0 && i%3!=0) S+=i;
printf(“%d”, S);
What is the output if the input is 15?
n 15
i 1 4 7 10 13 16
S 0+1 1 1+7  8 8+1321
S=21
46Basic Logics
NHẬP MÔN LẬP TRÌNH
Walkthroughs: Demo.
int m,n, i, S=0;
scanf(“%d%d”, &n, &m);
for (i=m; i<=n; i++) S+=i;
printf(“%d”, S);
What is the output if the input are 8 12?
Test the program:
int m,n, i, S=0;
scanf(“%da%d”, &n, &m);
for (i=m; i<=n; i++) S+=i;
printf(“%d”, S);
What is the output if the input are 8a12?
Modify Input
“%d %d” 12 8
“%d%d” 12 8
“%d%d” 12
8
“%d-%d” 12-8
47Basic Logics
NHẬP MÔN LẬP TRÌNH
Walkthroughs: Demo.
Study the following code:
int n=15;
int S=0;
i=1;
while (i<2*n)
{ S+= i;
i*=4;
}
Give your opinion.
a) S=21
b) S= 85
c) A syntax error
48Basic Logics
NHẬP MÔN LẬP TRÌNH
i= 1
2
3
4
5
6
Extra Demo: Print star characters
Print out 1*, “\n”
Print out 2*, “\n”
Print out 3*, “\n”
Print out 4*, “\n”
Print out 5*, “\n”
Print out 6*, “\n”
i
Accept N;
for ( i=1; i<=N; i++)
{ for (j=1; j<=i; j++) printf(“*”);
printf (“\n”);
}
N=6
*
**
***
****
*****
******
49Basic Logics
NHẬP MÔN LẬP TRÌNH
Extra Demo: Multiplication Table
N=5
5x 1= 5 
5x 2=10
5x 3=15
5x 4=20
5x 5=25
5x 6=30
5x 7=37
5x 8=40
5x 9=45
5x10=50
Accept n;
for ( i=1; i<=10; i++)
Print out “%dx%2d=%2d\n”, n, i, n*i
50Basic Logics
NHẬP MÔN LẬP TRÌNH
Summary
• Logic constructs = Statements can be used 
in a program.
– 3 Basic constructs: Sequence, selection 
constructs (if, ifelse, ?:, switch), Iteration 
constructs (for/ while/ do  while)
• Walkthrough: Code are executed by 
yourself, Tasks in a walkthrough: a record of 
the changes that occur in the values of 
program variables and listing of the output, 
if any, produced by the program.
51Basic Logics
NHẬP MÔN LẬP TRÌNH
Thank You
52Basic Logics
            Các file đính kèm theo tài liệu này:
 nhap_mon_lap_trinh_3_4_basic_logics_3623_1985377.pdf nhap_mon_lap_trinh_3_4_basic_logics_3623_1985377.pdf