SlideShare una empresa de Scribd logo
1 de 27
Nhập môn về lập trình (C2) Slide 1
Chương 2
Cấu trúc và thành phần
của chương trình C
Presenter:
Nhập môn về lập trình (C2) Slide 2
Nội dung
Chương trình C đơn giản.
Phong cách lập trình.
Rèn luyện việc xuất ra màn hình.
Đọc dữ liệu từ bàn phím.
Xử lý đơn giản.
Nhập môn về lập trình (C2) Slide 3
Learning outcomes
L.O.1.4 – Biết được cấu trúc và hiểu được các thành phần
của một chương trình viết bằng ngôn ngữ lập trình
C.
L.O.1.5 – Vận dụng được các nguyên tắc trong phong cách
lập trình để viết được các chương trình trong sáng
và dễ đọc.
L.O.1.6 – Liệt kê được các kiểu dữ liệu cơ bản trong C và
ghi ra giá trị điển hình của các kiểu đó trong mã
nguồn.
L.O.1.7 – Sử dụng được các hàm để đọc dữ liệu từ bàn
phím và xuất dữ liệu ra màn hình.
Nhập môn về lập trình (C2) Slide 4
Chương trình C đơn giản
#include “stdafx.h”
#include <conio.h>
/*
This is a simple program, which is used to show the structure of programs developed
in C
The objective of this program is to print the following information on different lines
1. University's name
2. Course's name
*/
void main()
{
// "printf" is a function, which is defined in <stdio.h>
printf("Ho Chi Minh city University of Technologyn");
printf("Programming Fundamentals");
// _getch() causes the program pause before close the console window,
// i.e., quit the program
// _getch() is a function, which is defined in <conio.h>
_getch();
}
Nhập môn về lập trình (C2) Slide 5
Chương trình C đơn giản
Các thành phần
 Khai báo thư viện sẽ được sử dụng
 Chỉ thị #include:
 Cho biết chương trình có sử dụng 2 thư
viện hàm stdio.lib (gián tiếp qua
stdafx.h) và conio.lib.
 Thư viện stdio.lib chứa hàm printf.
 Thư viện conio.lib chứa hàm _getch.
 Cách khai báo bằng chỉ thị #include
như hình bên.
 Chú ý dấu “ ” và < >.
#include “stdafx.h”
#include <conio.h>
void main()
{
printf(“123");
printf(“456n");
_getch();
}
Nhập môn về lập trình (C2) Slide 6
Chương trình C đơn giản
Các thành phần
 Chương trình viết bằng C sẽ bắt đầu chạy từ hàm main().
 main (viết toàn chữ thường) là tên hàm, chú ý dấu ().
• Lệnh đầu tiên ngay sau hàm main()
• Mỗi chương trình viết bằng C phải có một hàm có tên main
void main()
{
// Thân hàm
}
Dấu “{“ đánh dấu bắt đầu phần thân hàm main
Dấu “}“ đánh dấu điểm kết thúc phần thân hàm main
Nhập môn về lập trình (C2) Slide 7
Chương trình C đơn giản
Kiểu trả kết quả
 Kiểu trả kết quả do từ khóa viết trước tên hàm quy định (void).
 Trong trường hợp này, void có nghĩa là không trả kết quả về.
void main()
{
}
Nơi này xác định kiểu trả kết quả về của hàm (main)
void : Hàm main không trả kết quả gì về cả
Nhập môn về lập trình (C2) Slide 8
Chương trình C đơn giản
Các thành phần
 Chú thích
 Chú thích là văn bản không
cần có văn phạm của C.
 Chú thích được chèn vào
nhằm giải thích, ghi chú,
đánh dấu, hay làm tiêu đề
dẫn nhập cho phần tử của C.
 Hai dạng chú thích:
Chú thích trên nhiều dòng,
được bao bọc giữa ký hiệu
mở đầu “/*” và kết thúc “*/”.
Chú thích trên một dòng, mở
đầu bởi “//”.
#include "stdafx.h"
#include <conio.h>
/*
The objective of ...
...
This is ...
*/
void main(){
printf("..."); // "printf" is ...
printf("...");
_getch(); // waiting for ...
}
Chú thích
Nhập môn về lập trình (C2) Slide 9
Phong cách lập trình
 Chương trình cũng như một bài văn trong ngôn ngữ tự nhiên.
 Do đó, cần được viết sao cho dễ đọc, dễ hiểu, và dễ phát hiện các sai sót.
 Trong các dự án lớn, phong cách lập trình là rất quan trọng nhằm :
• Dễ dàng phối hợp giữa các thành viên phát triển
• Dễ dàng phát hiện sai sót
• Dễ dàng bảo trì và nâng cấp
 Danh sách các chủ đề có thể xem chi tiết ở những trang sau.
 Sinh viên phải rèn luyện phong cách trong suốt quá trình học, thông qua thực
hành.
Tất cả các bài nộp cho giảng viên xem phải tuân thủ hầu hết các gợi ý.
1. http://users.ece.cmu.edu/~eno/coding/CCodingStandard.html
2. http://www.cs.swarthmore.edu/~newhall/unixhelp/c_codestyle.html
Xem thêm
Nhập môn về lập trình (C2) Slide 10
Phong cách lập trình
Các gợi ý
 Về quy cách đặt tên:
• Hàm
 Bắt đầu bởi động từ (verb), vì hàm là đơn vị xử lý (nghĩa là thực thi hành
động).
 Tên phải nêu bật tính năng xử lý của hàm.
Ví dụ:
Nên dùng: check_for_errors()
Thay cho: error_checking() hay dump_data_to_file()
 Nên sử dụng “suffix” hay “prefix” để tăng ngữ nghĩa.
 Prefixes
• is kiểm tra xem một điều kiện nào đó có thỏa hay không
• get lấy giá trị
• set gán giá trị
Nhập môn về lập trình (C2) Slide 11
Phong cách lập trình
Các gợi ý
• Biến
 Thường bắt đầu bởi danh từ (noun)
 Tất cả các ký tự trong tên đều là chữ thường
 Nối các từ với nhau bởi dấu gạch dưới, “_”
 Đưa đơn vị vào tên nếu có thể
Ví dụ: unit32 timeout_msec;
time time_of_error
• Biến kiểu pointer
 Đặt dấu * liền sát tên biến
 Suffix với “ptr” nếu có thể
Ví dụ:
char *name;
Student *student_ptr
Nhập môn về lập trình (C2) Slide 12
Phong cách lập trình
Các gợi ý
 Về quy cách đặt tên:
• Biến toàn cục
Prefix với “g_”, để dễ phân biệt trong code
Ví dụ:
Logger g_logger;
Logger g_logger_ptr;
• Hằng toàn cục
Sử dụng toàn bộ chữ hoa
Ví dụ:
const int A_GLOBAL_CONSTANT = 5;
 Xem chi tiết trong trang chỉ dẫn trước, và luyện tập
đến cuối chương trình học.
Nhập môn về lập trình (C2) Slide 13
Dữ liệu và kết xuất trong C
 Kiểu số nguyên
 Tên kiểu “int”, sẽ nói sâu hơn
trong chương sau.
 Giá trị ghi ra trong code (literal
constant):
Ví dụ: 15, -20, 40, . . .
 Sử dụng đặc tả “%d” hoặc “%i”
trong printf như ví dụ bên
Câu hỏi: luật in số nguyên ra màn
hình?
#include "stdafx.h"
#include <conio.h>
void main()
{
printf("%dn", 123);
printf("%5dn", 123);
printf("%05dn", 123);
_getch();
}
Nhập môn về lập trình (C2) Slide 14
Dữ liệu và kết xuất trong C
#include “stdafx.h”
#include <conio.h>
void main(){
printf("%dn", 123);
printf("%5dn", 123);
printf("%05dn", 123);
_getch();
}
Rèn luyện phong cách lập trình
#include “stdafx.h”
#include <conio.h>
void main()
{
printf("%dn", 123);
printf("%5dn", 123);
printf("%05dn", 123);
_getch();
}
#include “stdafx.h”
#include <conio.h>
void main()
{
printf("%dn", 123);
printf("%5dn", 123);
printf("%05dn", 123);
_getch();
}
Sử dụng TAB để canh lề code
Nên!
Không nên!
Nhập môn về lập trình (C2) Slide 15
Dữ liệu và kết xuất trong C
 Ký tự điều khiển
 n (newline)
 t (tab)
 v (vertical tab)
 f (new page)
 b (backspace)
 r (carriage return)

#include “stdafx.h”
#include <conio.h>
void main()
{
printf("%dn", 123);
printf("%5dn", 123);
printf("%05dn", 123);
_getch();
}
Nhập môn về lập trình (C2) Slide 16
Dữ liệu và kết xuất trong C
 Kiểu số nguyên
 In nhiều số dùng chỉ một hàm printf
#include “stdafx.h”
#include <conio.h>
void main()
{
printf("|%5d|t%5d|t%5d|n",123,456,7890);
printf("|%5d|t%5d|t%5d|n",12,345,6789);
_getch();
}
Nhập môn về lập trình (C2) Slide 17
Dữ liệu và kết xuất trong C
 Kiểu số thực chấm động
 Kiểu chính xác đơn: float
 Kiểu chính xác kép: double
 Giá trị ghi ra trong code (literal
constant):
Ví dụ: float: 5.5f
double: 5.5
 Sử dụng đặc tả “%f” trong printf.
#include “stdafx.h”
#include <conio.h>
void main()
{
printf("%fn", 123.456);
printf("%10.2fn", 123.456);
printf("%010.2fn", 123.456);
_getch();
}
1. Làm sao chỉ in ra 3 ký tự sau chấm thập phân.
2. Hãy in ra số thực có 7 ký số (kể cả dấu chấm).
Câu hỏi
Nhập môn về lập trình (C2) Slide 18
Dữ liệu và kết xuất trong C
 Kiểu ký tự
 Tên kiểu: char
 Giá trị ghi ra trong code
(literal constant):
Ví dụ: ‘A’, ‘a’, ‘8’, ‘(‘, ...
 Sử dụng đặc tả “%c” trong
printf.
#include “stdafx.h”
#include <conio.h>
void main()
{
printf("%cn", 'A');
printf("%3cn", 'a');
printf("%03cn", '8');
_getch();
}
1. Hãy giải thích ý nghĩa của định dạng “%3c”.
2. Định dạng “%03c” in ra thế nào ?
Câu hỏi
Nhập môn về lập trình (C2) Slide 19
Dữ liệu và kết xuất trong C
Kiểu chuỗi (string)
 Kiểu chuỗi được hiểu là dãy ký
tự (character array) và kết thúc
bằng ký tự null (‘0’). Định
nghĩa như sau:
char s[50];
 Giá trị chuỗi (literal constant)
viết trong 2 dấu nháy kép (“):
“Programming Fundamentals”,
“Computer”, ...
 Sử dụng đặc tả “%s” trong
printf.
#include "stdafx.h"
#include <conio.h>
void main()
{
printf("%sn","01234567890123456789");
printf("%sn","University");
printf("%20sn","University");
printf("%020sn","University");
_getch();
}

Nhập môn về lập trình (C2) Slide 20
Nhập liệu trong C
 Nguyên tắc
• Dữ liệu có thể được nhập vào từ bàn phím thông qua các hàm
nhập.
• Giá trị nhập vào sẽ được lưu giữ trong bộ nhớ.
Sinh viên tạm thời chấp nhận hai khái niệm sau:
1. Vùng nhớ được đặt tên (còn gọi là biến)
Ví dụ: int i,so; float x,y; char ktu,s[36];
2. Cách lấy địa chỉ của vùng nhớ
Ví dụ: &ktu, &so, &x
(sử dụng dấu & trước tên của biến)
Nhập môn về lập trình (C2) Slide 21
Nhập liệu trong C
 Hàm nhập dữ liệu
• Hàm scanf trong thư viện stdio.lib.
• Cú pháp:
scanf_s(<hằng chuỗi định dạng>,<danh sách địa chỉ biến>)
Phần đặc tả những
kiểu mong muốn đọc
Phần liệt kê địa chỉ của các biến tương
ứng với những kiểu mong muốn.
Dùng dấu phẩy “,” để phân cách các địa
chỉ
Nhập môn về lập trình (C2) Slide 22
Nhập liệu trong C
 Nhập số nguyên : %d
#include "stdafx.h"
#include <conio.h>
void main()
{
int x;
printf("%s", "Please enter x: ");
scanf_s("%d", &x);
printf("%s %dn", "x =", x);
_getch();
}
Cửa sổ ban đầu:
(chương trình chờ người dùng nhập vào một số nguyên)
Cửa sổ sau khi nhập giá trị 123 và nhấn phím ENTER:
Nhập môn về lập trình (C2) Slide 23
Nhập liệu trong C
 Đọc hai số nguyên với 1 scanf_s
Cửa sổ ban đầu:
Nhập giá trị 123 và ENTER:
nhập tiếp giá trị 456 và nhấn ENTER:
#include “stdafx.h”
#include <conio.h>
void main()
{
int x;
int y;
printf("%s", "Please enter x: ");
scanf_s("%d", &x);
printf("%s", "Please enter y: ");
scanf_s("%d", &y);
printf("%s %dn", "x =", x);
printf("%s %dn", "y =", y);
_getch();
}
Nhập môn về lập trình (C2) Slide 24
Nhập liệu trong C
Chương trình ngắn hơn nhưng
có cùng tính năng
 Hai vùng nhớ được khai báo trên
cùng dòng.
 Hàm scanf_s đọc hai giá trị x
và y trong cùng 1 lần gọi.
 Hàm printf in hai giá trị x và
y trong cùng 1 lần gọi.
 Sử dụng các ký tự điều khiển n
đúng chỗ.
#include "stdafx.h"
#include <conio.h>
void main()
{
int x,y;
printf("Please enter x and y: ");
scanf_s("%d %d",&x,&y);
printf("x = %dny = %dn",x,y);
_getch();
}
Nhập môn về lập trình (C2) Slide 25
Nhập liệu trong C
Bảng các đặc tả kiểu dữ liệu muốn nhập vào
Kiểu Đặc tả dữ liệu muốn đọc trong hàm scanf
int %d %i
%u (số không dấu, unsigned int)
float %f, %e, %E, %g, %G
double %lf, %le, %lE, %lg, %lG
char %c
string %s
1. http://www.tutorialspoint.com/c_standard_library/c_function_fscanf.htm
Xem thêm
Nhập môn về lập trình (C2) Slide 26
Xử lý đơn giản
 Yêu cầu của chương trình:
• Đọc hai số x và y là tọa độ trong không gian 2D.
• Tính và in ra khoảng cách từ tâm hệ trục tọa độ đến điểm (x,y)
#include "stdafx.h"
#include <conio.h>
#include <math.h>
void main(){
float x, y;
printf("Please enter coordinates x and y: ");
scanf_s("%f%f", &x, &y);
printf("(x,y) = (%5.2f,%5.2f)n", x, y);
printf("Distance to the origin = %5.2fn",
sqrt(x*x + y*y));
_getch();
}
Nhập môn về lập trình (C2) Slide 27
Xử lý đơn giản
 Dùng thư viện toán học, cần chèn tập tin <math.h>
 Hàm sqrt(x): tính và trả về giá trị căn bậc hai của x.
 Kết quả như hình sau :

Más contenido relacionado

Similar a Nhập môn lập trình - Vương Bá Thịnh

Bai tap lap trinh c
Bai tap lap trinh  cBai tap lap trinh  c
Bai tap lap trinh c
tiểu minh
 
Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04
. .
 
Phần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình CPhần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình C
Huy Rùa
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++
Congdat Le
 
C2 basics of_c_and_cpp
C2 basics of_c_and_cppC2 basics of_c_and_cpp
C2 basics of_c_and_cpp
Hồ Lợi
 
Chuong1 on tapc
Chuong1 on tapcChuong1 on tapc
Chuong1 on tapc
Hung Pham
 

Similar a Nhập môn lập trình - Vương Bá Thịnh (20)

C9 templates
C9 templatesC9 templates
C9 templates
 
Bai tap lap trinh c
Bai tap lap trinh  cBai tap lap trinh  c
Bai tap lap trinh c
 
Baigiang01 mo dau
Baigiang01 mo dauBaigiang01 mo dau
Baigiang01 mo dau
 
Phan2 chuong1 gioithieu_c
Phan2 chuong1 gioithieu_cPhan2 chuong1 gioithieu_c
Phan2 chuong1 gioithieu_c
 
Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04Cq lt hdt-th2011-02-tuan04
Cq lt hdt-th2011-02-tuan04
 
Nhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá ThịnhNhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá Thịnh
 
Phần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình CPhần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình C
 
Ngon ngu c
Ngon ngu cNgon ngu c
Ngon ngu c
 
Session 01
Session 01Session 01
Session 01
 
Session 01
Session 01Session 01
Session 01
 
Session 01 C
Session 01 CSession 01 C
Session 01 C
 
Thdc3 Lap Trinh C
Thdc3 Lap Trinh CThdc3 Lap Trinh C
Thdc3 Lap Trinh C
 
Phạm văn ất
Phạm văn ấtPhạm văn ất
Phạm văn ất
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 
Sổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ CSổ tay thư viện hàm ngôn ngữ C
Sổ tay thư viện hàm ngôn ngữ C
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++
 
C2 basics of_c_and_cpp
C2 basics of_c_and_cppC2 basics of_c_and_cpp
C2 basics of_c_and_cpp
 
C2 basics of_c_and_cpp
C2 basics of_c_and_cppC2 basics of_c_and_cpp
C2 basics of_c_and_cpp
 
Chuong1 on tapc
Chuong1 on tapcChuong1 on tapc
Chuong1 on tapc
 

Nhập môn lập trình - Vương Bá Thịnh

  • 1. Nhập môn về lập trình (C2) Slide 1 Chương 2 Cấu trúc và thành phần của chương trình C Presenter:
  • 2. Nhập môn về lập trình (C2) Slide 2 Nội dung Chương trình C đơn giản. Phong cách lập trình. Rèn luyện việc xuất ra màn hình. Đọc dữ liệu từ bàn phím. Xử lý đơn giản.
  • 3. Nhập môn về lập trình (C2) Slide 3 Learning outcomes L.O.1.4 – Biết được cấu trúc và hiểu được các thành phần của một chương trình viết bằng ngôn ngữ lập trình C. L.O.1.5 – Vận dụng được các nguyên tắc trong phong cách lập trình để viết được các chương trình trong sáng và dễ đọc. L.O.1.6 – Liệt kê được các kiểu dữ liệu cơ bản trong C và ghi ra giá trị điển hình của các kiểu đó trong mã nguồn. L.O.1.7 – Sử dụng được các hàm để đọc dữ liệu từ bàn phím và xuất dữ liệu ra màn hình.
  • 4. Nhập môn về lập trình (C2) Slide 4 Chương trình C đơn giản #include “stdafx.h” #include <conio.h> /* This is a simple program, which is used to show the structure of programs developed in C The objective of this program is to print the following information on different lines 1. University's name 2. Course's name */ void main() { // "printf" is a function, which is defined in <stdio.h> printf("Ho Chi Minh city University of Technologyn"); printf("Programming Fundamentals"); // _getch() causes the program pause before close the console window, // i.e., quit the program // _getch() is a function, which is defined in <conio.h> _getch(); }
  • 5. Nhập môn về lập trình (C2) Slide 5 Chương trình C đơn giản Các thành phần  Khai báo thư viện sẽ được sử dụng  Chỉ thị #include:  Cho biết chương trình có sử dụng 2 thư viện hàm stdio.lib (gián tiếp qua stdafx.h) và conio.lib.  Thư viện stdio.lib chứa hàm printf.  Thư viện conio.lib chứa hàm _getch.  Cách khai báo bằng chỉ thị #include như hình bên.  Chú ý dấu “ ” và < >. #include “stdafx.h” #include <conio.h> void main() { printf(“123"); printf(“456n"); _getch(); }
  • 6. Nhập môn về lập trình (C2) Slide 6 Chương trình C đơn giản Các thành phần  Chương trình viết bằng C sẽ bắt đầu chạy từ hàm main().  main (viết toàn chữ thường) là tên hàm, chú ý dấu (). • Lệnh đầu tiên ngay sau hàm main() • Mỗi chương trình viết bằng C phải có một hàm có tên main void main() { // Thân hàm } Dấu “{“ đánh dấu bắt đầu phần thân hàm main Dấu “}“ đánh dấu điểm kết thúc phần thân hàm main
  • 7. Nhập môn về lập trình (C2) Slide 7 Chương trình C đơn giản Kiểu trả kết quả  Kiểu trả kết quả do từ khóa viết trước tên hàm quy định (void).  Trong trường hợp này, void có nghĩa là không trả kết quả về. void main() { } Nơi này xác định kiểu trả kết quả về của hàm (main) void : Hàm main không trả kết quả gì về cả
  • 8. Nhập môn về lập trình (C2) Slide 8 Chương trình C đơn giản Các thành phần  Chú thích  Chú thích là văn bản không cần có văn phạm của C.  Chú thích được chèn vào nhằm giải thích, ghi chú, đánh dấu, hay làm tiêu đề dẫn nhập cho phần tử của C.  Hai dạng chú thích: Chú thích trên nhiều dòng, được bao bọc giữa ký hiệu mở đầu “/*” và kết thúc “*/”. Chú thích trên một dòng, mở đầu bởi “//”. #include "stdafx.h" #include <conio.h> /* The objective of ... ... This is ... */ void main(){ printf("..."); // "printf" is ... printf("..."); _getch(); // waiting for ... } Chú thích
  • 9. Nhập môn về lập trình (C2) Slide 9 Phong cách lập trình  Chương trình cũng như một bài văn trong ngôn ngữ tự nhiên.  Do đó, cần được viết sao cho dễ đọc, dễ hiểu, và dễ phát hiện các sai sót.  Trong các dự án lớn, phong cách lập trình là rất quan trọng nhằm : • Dễ dàng phối hợp giữa các thành viên phát triển • Dễ dàng phát hiện sai sót • Dễ dàng bảo trì và nâng cấp  Danh sách các chủ đề có thể xem chi tiết ở những trang sau.  Sinh viên phải rèn luyện phong cách trong suốt quá trình học, thông qua thực hành. Tất cả các bài nộp cho giảng viên xem phải tuân thủ hầu hết các gợi ý. 1. http://users.ece.cmu.edu/~eno/coding/CCodingStandard.html 2. http://www.cs.swarthmore.edu/~newhall/unixhelp/c_codestyle.html Xem thêm
  • 10. Nhập môn về lập trình (C2) Slide 10 Phong cách lập trình Các gợi ý  Về quy cách đặt tên: • Hàm  Bắt đầu bởi động từ (verb), vì hàm là đơn vị xử lý (nghĩa là thực thi hành động).  Tên phải nêu bật tính năng xử lý của hàm. Ví dụ: Nên dùng: check_for_errors() Thay cho: error_checking() hay dump_data_to_file()  Nên sử dụng “suffix” hay “prefix” để tăng ngữ nghĩa.  Prefixes • is kiểm tra xem một điều kiện nào đó có thỏa hay không • get lấy giá trị • set gán giá trị
  • 11. Nhập môn về lập trình (C2) Slide 11 Phong cách lập trình Các gợi ý • Biến  Thường bắt đầu bởi danh từ (noun)  Tất cả các ký tự trong tên đều là chữ thường  Nối các từ với nhau bởi dấu gạch dưới, “_”  Đưa đơn vị vào tên nếu có thể Ví dụ: unit32 timeout_msec; time time_of_error • Biến kiểu pointer  Đặt dấu * liền sát tên biến  Suffix với “ptr” nếu có thể Ví dụ: char *name; Student *student_ptr
  • 12. Nhập môn về lập trình (C2) Slide 12 Phong cách lập trình Các gợi ý  Về quy cách đặt tên: • Biến toàn cục Prefix với “g_”, để dễ phân biệt trong code Ví dụ: Logger g_logger; Logger g_logger_ptr; • Hằng toàn cục Sử dụng toàn bộ chữ hoa Ví dụ: const int A_GLOBAL_CONSTANT = 5;  Xem chi tiết trong trang chỉ dẫn trước, và luyện tập đến cuối chương trình học.
  • 13. Nhập môn về lập trình (C2) Slide 13 Dữ liệu và kết xuất trong C  Kiểu số nguyên  Tên kiểu “int”, sẽ nói sâu hơn trong chương sau.  Giá trị ghi ra trong code (literal constant): Ví dụ: 15, -20, 40, . . .  Sử dụng đặc tả “%d” hoặc “%i” trong printf như ví dụ bên Câu hỏi: luật in số nguyên ra màn hình? #include "stdafx.h" #include <conio.h> void main() { printf("%dn", 123); printf("%5dn", 123); printf("%05dn", 123); _getch(); }
  • 14. Nhập môn về lập trình (C2) Slide 14 Dữ liệu và kết xuất trong C #include “stdafx.h” #include <conio.h> void main(){ printf("%dn", 123); printf("%5dn", 123); printf("%05dn", 123); _getch(); } Rèn luyện phong cách lập trình #include “stdafx.h” #include <conio.h> void main() { printf("%dn", 123); printf("%5dn", 123); printf("%05dn", 123); _getch(); } #include “stdafx.h” #include <conio.h> void main() { printf("%dn", 123); printf("%5dn", 123); printf("%05dn", 123); _getch(); } Sử dụng TAB để canh lề code Nên! Không nên!
  • 15. Nhập môn về lập trình (C2) Slide 15 Dữ liệu và kết xuất trong C  Ký tự điều khiển  n (newline)  t (tab)  v (vertical tab)  f (new page)  b (backspace)  r (carriage return)  #include “stdafx.h” #include <conio.h> void main() { printf("%dn", 123); printf("%5dn", 123); printf("%05dn", 123); _getch(); }
  • 16. Nhập môn về lập trình (C2) Slide 16 Dữ liệu và kết xuất trong C  Kiểu số nguyên  In nhiều số dùng chỉ một hàm printf #include “stdafx.h” #include <conio.h> void main() { printf("|%5d|t%5d|t%5d|n",123,456,7890); printf("|%5d|t%5d|t%5d|n",12,345,6789); _getch(); }
  • 17. Nhập môn về lập trình (C2) Slide 17 Dữ liệu và kết xuất trong C  Kiểu số thực chấm động  Kiểu chính xác đơn: float  Kiểu chính xác kép: double  Giá trị ghi ra trong code (literal constant): Ví dụ: float: 5.5f double: 5.5  Sử dụng đặc tả “%f” trong printf. #include “stdafx.h” #include <conio.h> void main() { printf("%fn", 123.456); printf("%10.2fn", 123.456); printf("%010.2fn", 123.456); _getch(); } 1. Làm sao chỉ in ra 3 ký tự sau chấm thập phân. 2. Hãy in ra số thực có 7 ký số (kể cả dấu chấm). Câu hỏi
  • 18. Nhập môn về lập trình (C2) Slide 18 Dữ liệu và kết xuất trong C  Kiểu ký tự  Tên kiểu: char  Giá trị ghi ra trong code (literal constant): Ví dụ: ‘A’, ‘a’, ‘8’, ‘(‘, ...  Sử dụng đặc tả “%c” trong printf. #include “stdafx.h” #include <conio.h> void main() { printf("%cn", 'A'); printf("%3cn", 'a'); printf("%03cn", '8'); _getch(); } 1. Hãy giải thích ý nghĩa của định dạng “%3c”. 2. Định dạng “%03c” in ra thế nào ? Câu hỏi
  • 19. Nhập môn về lập trình (C2) Slide 19 Dữ liệu và kết xuất trong C Kiểu chuỗi (string)  Kiểu chuỗi được hiểu là dãy ký tự (character array) và kết thúc bằng ký tự null (‘0’). Định nghĩa như sau: char s[50];  Giá trị chuỗi (literal constant) viết trong 2 dấu nháy kép (“): “Programming Fundamentals”, “Computer”, ...  Sử dụng đặc tả “%s” trong printf. #include "stdafx.h" #include <conio.h> void main() { printf("%sn","01234567890123456789"); printf("%sn","University"); printf("%20sn","University"); printf("%020sn","University"); _getch(); } 
  • 20. Nhập môn về lập trình (C2) Slide 20 Nhập liệu trong C  Nguyên tắc • Dữ liệu có thể được nhập vào từ bàn phím thông qua các hàm nhập. • Giá trị nhập vào sẽ được lưu giữ trong bộ nhớ. Sinh viên tạm thời chấp nhận hai khái niệm sau: 1. Vùng nhớ được đặt tên (còn gọi là biến) Ví dụ: int i,so; float x,y; char ktu,s[36]; 2. Cách lấy địa chỉ của vùng nhớ Ví dụ: &ktu, &so, &x (sử dụng dấu & trước tên của biến)
  • 21. Nhập môn về lập trình (C2) Slide 21 Nhập liệu trong C  Hàm nhập dữ liệu • Hàm scanf trong thư viện stdio.lib. • Cú pháp: scanf_s(<hằng chuỗi định dạng>,<danh sách địa chỉ biến>) Phần đặc tả những kiểu mong muốn đọc Phần liệt kê địa chỉ của các biến tương ứng với những kiểu mong muốn. Dùng dấu phẩy “,” để phân cách các địa chỉ
  • 22. Nhập môn về lập trình (C2) Slide 22 Nhập liệu trong C  Nhập số nguyên : %d #include "stdafx.h" #include <conio.h> void main() { int x; printf("%s", "Please enter x: "); scanf_s("%d", &x); printf("%s %dn", "x =", x); _getch(); } Cửa sổ ban đầu: (chương trình chờ người dùng nhập vào một số nguyên) Cửa sổ sau khi nhập giá trị 123 và nhấn phím ENTER:
  • 23. Nhập môn về lập trình (C2) Slide 23 Nhập liệu trong C  Đọc hai số nguyên với 1 scanf_s Cửa sổ ban đầu: Nhập giá trị 123 và ENTER: nhập tiếp giá trị 456 và nhấn ENTER: #include “stdafx.h” #include <conio.h> void main() { int x; int y; printf("%s", "Please enter x: "); scanf_s("%d", &x); printf("%s", "Please enter y: "); scanf_s("%d", &y); printf("%s %dn", "x =", x); printf("%s %dn", "y =", y); _getch(); }
  • 24. Nhập môn về lập trình (C2) Slide 24 Nhập liệu trong C Chương trình ngắn hơn nhưng có cùng tính năng  Hai vùng nhớ được khai báo trên cùng dòng.  Hàm scanf_s đọc hai giá trị x và y trong cùng 1 lần gọi.  Hàm printf in hai giá trị x và y trong cùng 1 lần gọi.  Sử dụng các ký tự điều khiển n đúng chỗ. #include "stdafx.h" #include <conio.h> void main() { int x,y; printf("Please enter x and y: "); scanf_s("%d %d",&x,&y); printf("x = %dny = %dn",x,y); _getch(); }
  • 25. Nhập môn về lập trình (C2) Slide 25 Nhập liệu trong C Bảng các đặc tả kiểu dữ liệu muốn nhập vào Kiểu Đặc tả dữ liệu muốn đọc trong hàm scanf int %d %i %u (số không dấu, unsigned int) float %f, %e, %E, %g, %G double %lf, %le, %lE, %lg, %lG char %c string %s 1. http://www.tutorialspoint.com/c_standard_library/c_function_fscanf.htm Xem thêm
  • 26. Nhập môn về lập trình (C2) Slide 26 Xử lý đơn giản  Yêu cầu của chương trình: • Đọc hai số x và y là tọa độ trong không gian 2D. • Tính và in ra khoảng cách từ tâm hệ trục tọa độ đến điểm (x,y) #include "stdafx.h" #include <conio.h> #include <math.h> void main(){ float x, y; printf("Please enter coordinates x and y: "); scanf_s("%f%f", &x, &y); printf("(x,y) = (%5.2f,%5.2f)n", x, y); printf("Distance to the origin = %5.2fn", sqrt(x*x + y*y)); _getch(); }
  • 27. Nhập môn về lập trình (C2) Slide 27 Xử lý đơn giản  Dùng thư viện toán học, cần chèn tập tin <math.h>  Hàm sqrt(x): tính và trả về giá trị căn bậc hai của x.  Kết quả như hình sau :