PowerPoint Presentation Nhập môn về lập trình (C2) Slide * 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 * Nội dung Chương trình C đơn giản Phong c[.]
Trang 1Chương 2
Cấu trúc và thành phần
của chương trình C
Presenter:
Trang 2Nội dung
Trang 3Learning 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
Trang 4Giới thiệu
Trang 5Giới thiệu
Cách học lập trình cũng như học một thứ tiếng
Ban đầu, bằng cách học máy móc một số chương trình mẫu
Sửa đổi, hoặc thêm bớt trong chương trình mẫu
Thường xuyên xảy ra sai sót phải biết cách sửa lỗi
Trang 6Chương trình C đơn giản
// "printf" is a function, which is defined in <stdio.h>
printf("Ho Chi Minh city University of Technology\n");
printf("Programming Fundamentals");
// _getch() causes the program pause before close the console window,
// _getch() is a function, which is defined in <conio.h>
_getch();
}
Trang 7Chươ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 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 <stdio.h>
#include <conio.h>
void main() {
printf( “123" );
printf( “456\n" );
_getch();
}
Trang 8Chươ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
Trang 9Chương trình C đơn giản
Kiểu trả kết quả
Trang 10Chương trình C đơn giản
Các thành phần
Chú thích
cần có văn phạm của C.
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.
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ở
Trang 11Phong 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
Trang 12 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ị
Trang 13Phong 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
Trang 14Phong 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
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
Trang 15Hiển thị chuỗi
printf("Ho Chi Minh city University of Technology"); printf("Programming Fundamentals");
Trang 16Hiển thị chuỗi
printf("Ho Chi Minh city University of Technology\n"); printf("Programming Fundamentals");
Trang 17 \\: Hiển thị ký tự \ trong chuỗi
\": Hiển thị dấu nháy kép trong chuỗi
Trang 19Hiển thị chuỗi
printf( "Toan 7.5 Kha\n" );
printf( "Ly 5.0 Trung binh\n" );
printf( "Hoa 3.0 Yeu\n" );
printf( "Toan\t7.5\tKha\n" );
printf( "Ly\t5.0\tTrung binh\n" );
printf( "Hoa\t3.0\tYeu\n" );
Trang 20Dữ liệu và kết xuất trong C
Kiểu số nguyên
trong chương sau.
constant):
Ví dụ: 15, -20, 40,
Câu hỏi: luật in số nguyên ra màn hình?
#include "stdafx.h"
#include <conio.h>
void main() {
printf("%d\n", 123); printf("%5d\n", 123); printf("%05d\n",
123);
_getch();
}
Trang 21Dữ liệu và kết xuất trong C
printf( "%d\n" , 123);
printf( "%5d\n" , 123);
printf( "%05d\n" , 123);
printf( "%d\n" , 123); printf( "%5d\n" , 123);
printf( "%05d\n" , 123);
Trang 22Dữ liệu và kết xuất trong C
printf("%d\n", 123);
printf("%5d\n", 123); printf("%05d\n", 123); _getch();
}
Trang 23Dữ liệu và kết xuất trong C
Trang 24Dữ 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
printf("%f\n", 123.456);
printf("%10.2f\n", 123.456); printf("%010.2f\n",
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
Trang 25Dữ liệu và kết xuất trong C
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( "%c\n" , 'A' ); printf( "%3c\n" , 'a' ); printf( "%03c\n" ,
Trang 26Dữ liệu và kết xuất trong C
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 (“):
Trang 27Chương trình tính toán đơn giản
Trang 28Chương trình tính toán đơn giản
Danh hiệu: là tên hợp lệ trong ngôn ngữ, dùng để đặt tên cho biến, hàm.
Thành phần: gồm chữ cái, số và gạch dưới (_), không bắt đầu bằng số
và không có khoảng trắng
Welcome1, idenfier, _value, m_inputField1
Quy ước cho danh hiệu: Xem tài liệu
Đặt tên có ý nghĩa, dễ hiểu, đừng nên dài quá
Viết hoa chữ cái đầu tiên: MonthlySalary
Dùng gạch nối: monthly_salary
Danh hiệu nào sau đây hợp lệ:
DegToRad, %x1, %my_var, intersect, addNums, @x2, _density
Trang 29Chương trình tính toán đơn giản
Khai báo và gán giá trị
Trang 30Chương trình tính toán đơn giản
total = grade1 + grade2;
average = total/2;
printf("The average grade is: %d", average);
Trang 31Chương trình tính toán đơn giản
Trang 32Chương trình tính toán đơn giản
Trang 33Nhậ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)
Trang 34Nhập liệu trong C
• Hàm scanf trong thư viện stdio.lib.
• Cú pháp:
scanf ( <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ỉ
Trang 35Nhập liệu trong C
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:
Trang 36Nhập liệu trong C
Cửa sổ ban đầu:
}
Trang 37Nhập liệu trong C
Trang 38Nhập liệu trong C
Bảng các đặc tả kiểu dữ liệu muốn nhập vào
Trang 39Chương trình tính toán đơn giản
Trang 40Chương trình tính toán đơn giản
Trang 41Xử lý đơn giản
Trang 42Xử lý đơn giản
Phép chia số nguyên cho ra kết quả là phần thương của hai số
1.75)
• 17 / 5 cho ra 3
Phần thập phân bị cắt đi, chứ không phải làm tròn
Phép chia lấy số dư (%) : hai toán hạng là số nguyên
Trang 43Xử lý đơn giản
Trang 44Xử lý đơn giản
Trang 45Xử lý đơn giản
• Đọ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)
printf("Please enter coordinates x and y: ");
scanf_s("%f%f", &x, &y);
Trang 46Xử lý đơn giản