Bài giảng Lập trình nâng cao: Ôn tập cung cấp cho người học các kiến thức: Kiểu và biến, phép toán, thứ tự ưu tiên, lệnh rẽ nhánh, hàm và gọi hàm, chương trình, simple calculator. Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Simple Calculator
1 - Ôn tập
https://github.com/tqlong/advprogram
Trang 2Nội dung
Ôn tập:
● Kiểu và biến
● Phép toán, thứ tự ưu tiên
● Lệnh rẽ nhánh
● Hàm và gọi hàm
● Chương trình Simple Calculator
Trang 3Đặt vấn đề
Xây dựng chương trình tính các phép toán cộng, trừ, nhân, chia, phần dư khi chia 2 số nguyên
Trang 4Các bước thực hiện (phương án)
● Nhập 2 số nguyên và kí tự thể hiện phép toán
● Lựa chọn phép toán
● Tính toán kết quả
● In ra màn hình text
Cần mô tả bằng lời các bước giải quyết vấn đề.
Trang 5Lập trình
● Nhập 2 số nguyên int và kí tự char thể hiện phép toán bằng std::cin
● Dùng switch lựa chọn phép toán, tính toán kết quả
● In ra màn hình bằng std::cout
Tìm kiếm, tra cứu cách sử dụng ngôn ngữ lập trình thực hiện các bước đã đề ra
Trang 6Simple Calculator 0.1
# include < iostream >
u sin g n am esp ace std;
in t m ain ()
{
in t num 1, num 2;
ch ar op;
cin > > num 1 > > num 2 > > op;
// Đ ặt lệnh sw itch ở ở đây đểở lựa chọn phép toán
retu rn ;
}
Trang 7Simple Calculator 0.1
sw itch (op) {
case '+ ' :
cout < < num 1 + num 2 < < endl;
break ;
case '-' :
cout < < num 1 - num 2 < < endl;
break ;
case '*' :
cout < < num 1 * num 2 < < endl;
break ;
case '/' :
cout < < num 1 / num 2 < < endl;
break ;
case '% ' :
cout < < num 1 % num 2 < < endl;
break ;
default:
cout < < "Invalid operator" < < endl;
}
Trang 8Kết quả
Sử dụng cửa sổ lệnh Command Prompt
Sau khi dịch chương trình bằng CodeBlocks
Trang 9Cải tiến
Nhập toán tử phía sau toán hạng không được tự nhiên Thay lệnh nhập bằng lệnh
cin > > num 1 > > op > > num 2;
Trang 10Cải tiến
Khi chia hoặc lấy phần dư khi chia
cho 0, chương trình báo lỗi Cần
kiểm tra trước khi chia cho 0
case '/' :
if (num 2 = = 0
cout < < "Invalid divisor" < < endl;
else
cout < < num 1 / num 2 < < endl;
b reak ;
case '% ' :
if (num 2 = = 0
cout < < "Invalid divisor" < < endl;
else
cout < < num 1 % num 2 < < endl;
Trang 11Bài tập
● Chương trình có thể còn lỗi gì ?
● Tìm cách sửa các lỗi này.
● Thêm tính năng đảo chỗ 2 số
● Thay đầu vào bằng số thực (float, double)
Trang 12Nội dung
Ôn tập:
● Chương trình Simple Calculator 0.2
Trang 13Kỹ thuật khác
● Nhập 2 số nguyên và kí tự thể hiện phép toán qua tham số trên dòng lệnh
● Sử dụng các tham số argc, argv của hàm main()
● Chuyển xâu kí tự thành số bằng atoi()
● Viết hàm tính toán các phép tính số học
● Gọi hàm
Trang 14Simple Calculator 0.2
# include < iostream >
# include < cstdlib>
u sin g n am esp ace std;
in t arith m etic ( in t num 1, in t
num 2, ch ar op);
in t m ain ( in t argc, ch ar * argv[])
{
in t num 1, num 2;
ch ar op;
num 1 = atoi(argv[ 1 ]);
op = argv[ 2 ][ 0 ];
num 2 = atoi(argv[ 3 ]);
cout < < arithm etic(num 1,
Lệnh atoi chuyểởn xâu kí
tự thành sốố nguyển khai báo trong
< cstdlib>
H àm tính toán sốố học Tham sốố argv[0] là tển chưởng trình, argv[1] là
tham sốố thứ nhâố t trển
dòng lệnh, argv[2 ] là
tham sốố thứ 2 , …
Sốố hạng thứ nhâố t là
Trang 15Simple Calculator 0.2
in t arith m etic(int num 1, int num 2, char op)
{
sw itch (op) {
case'+ ':
retu rn num 1 + num 2;
case'-':
retu rn num 1 - num 2;
case'x':
retu rn num 1 * num 2;
case'/':
if (num 2 = = 0) {
cout < < "Invalid divisor" < < endl;
exit(1);
}
else
retu rn num 1 / num 2;
case'% ':
if (num 2 = = 0) {
cout < < "Invalid divisor" < < endl;
exit(1);
}
else
retu rn num 1 % num 2;
default:
cout < < "Invalid operator" < < endl;
exit(1);
}
}
H àm có 3 th am sốố, tra ả vềề kiềảu
in t
K h ống d ù ng std ::cout ởả đ ây
m à d ùn g retu rn tra ả vềề kềốt qu a ả tính toán
T h ay d âốu * bằng d âốu x vì dâốu *
là ký tự đ ặc b iệt trền các cửảa sốả lệnh
T h oát ch ửởn g trình kh i sốố chia
b ằng 0
T h oát ch ửởn g trình kh i p hép toán khống hợp lệ
Trang 16Simple Calculator 0.2
Trang 17● Cho phép nhập số hạng là số thực
● Kiểm tra số tham số có hợp lệ
● Trường hợp dòng lệnh chỉ có hai tham số , đây là yêu cầu tính hàm (lượng giác hoặc căn bậc 2) Ví dụ:
○ SimpleCalculator.exe cos 1.5
○ SimpleCalculator.exe sqrt 5.2
Hãy lựa chọn phương án và kỹ thuật giải quyết các vấn đề trên.
Bài tập
Trang 18Tổng kết
Ôn tập
●