Bài giảng Nhập môn lập trình: Bài 1 do TS. Ngô Hữu Dũng biên soạn cung cấp cho người học các kiến thức: Tổng quan lập trình, các thành phần cơ bản, nhập xuất dữ liệu và các thư viện, các câu lệnh có cấu trúc, lệnh lựa chọn - rẽ nhánh, thuật toán, vòng lặp, hàm – chương trình con, kiểu dữ liệu mảng, chuỗi ký tự,...
Trang 2Bài 1 – Giới thiệu
Email ngohuudung@iuh.edu.vn
Trang 4Tài liệu
Brian W Kernighan and Dennis M Ritchie The C
Programming Language (Second Edition) Prentice-Hall
Englewood Cliffs, New Jersey, 1988.
Slide, bài giảng
Bài tập thực hành
Bản dịch tiếng Việt: Giáo trình Ngôn ngữ lập trình C
Tham khảo thêm
Phạm Văn Ất Kỹ thuật lập trình C NXB Khoa học và Kỹ thuật,
1995
Randal E.Bryant and David R.O’Hallaron Computer’s Perspective,
2001
Bjarne Stroustrup The C++ Programming Language, AT&T Labs
Murray Hill, New Jersey Addison-Wesley, 1997.
Andy Oram and Greg Wilson, Beautiful Code, 2007
cplusplus.com
Trang 5Lịch trình
thuyết
Thực hành
Kiểm tra Tự học
2 Các thành phần cơ bản của Ngôn ngữ C 2 4
Nhập xuất dữ liệu và các thư viện 4
Trang 6Kiểm tra đánh giá
Trang 7Thảo luận
What?
Why?
How?
Trang 8Một số gợi ý
Bám sát các nội dung thực hành (quan trọng!)
Đọc tài liệu, slide trước khi đến lớp
In tài liệu, slide, bài tập
Tự đặt câu hỏi và trả lời
Tự làm bài tập ở nhà
Tóm tắt các nội dung chủ yếu
Vắng học?
Trang 10Các bước lập trình
Xác định rõ yêu cầu của bài toán
Lựa chọn các biến và cấu trúc dữ liệu
Xây dựng giải thuật (cách giải) cho bài toán
Xây dựng trình tự để giải bài toán
Cài đặt (viết) chương trình và biên dịch
Chạy thử và sửa lỗi
Hoàn thiện và tối ưu hóa
Trang 11Ví dụ về các bước lập trình
Bài toán: Nhập, tính toán, xuất
Đề bài: Viết chương trình nhập vào hai số nguyên, xuất ramàn hình tổng của hai số nguyên đó
Các bước chính để giải bài toán:
Xác định rõ yêu cầu của bài toán
Lựa chọn các biến và cấu trúc dữ liệu
Xây dựng giải thuật (cách giải) cho bài toán
Xây dựng trình tự để giải bài toán
Cài đặt (viết) và biên dịch chương trình
Chạy thử và sửa lỗi
Hoàn thiện và tối ưu hóa
Trang 12Các bước giải bài toán
Xác định yêu cầu,
Nhập 2 số nguyên , tính tổng, xuất ra tổng.
Lựa chọn dữ liệu,
Cần lưu hai số nguyên
Cần lưu tổng hai số nguyên
Xây dựng thuật toán và trình tự,
Khai báo các biến để lưu trữ, bao nhiêu biến? Kiểu gì?
Nhập vào 2 số nguyên
Tính tổng
Xuất kết quả
Viết và biên dịch chương trình,
Chạy thử và sửa lỗi
Trang 14Khai báo thư viện
2. // Chứa các hàm nhập xuất cơ bản
3. // stdio : st an d ard C i nput o utput
5. //Chương trình chính
6. int main()
7. {
11. }
Trang 15Khai báo biến
1 #include <stdio.h> // Thư viện
2 //Chương trình chính
3 int main()
4 {
5 // Khai báo biến
6 int x; // int: int eger – số nguyên
7 int y; // Cú pháp: <kiểu> <tên biến> ;
8 int tong; // Hoặc: int x, y, tong;
9 // Nội dung chương trình
11 }
Trang 17Lưu đồ thuật toán và Mã giả
Dùng để biểu diễn, mô tả giải thuật
Print tong
Trang 18Nhập giá trị cho biến
1 #include <stdio.h> // Thư viện
2 int main() //Chương trình chính
Trang 19Tính toán – Xử lý
1 #include <stdio.h> //Khai báo thư viện
Trang 20Xuất ra màn hình
1 #include <stdio.h> //Khai báo thư viện
Trang 21Chương trình tính tổng tham khảo
1 #include <stdio.h> //Khai báo thư viện
Trang 23Nhận xét – Thư viện
Thư viện
Chứa các hàm đã được định nghĩa sẵn
Khai báo
#include <tên thư viện>
#include <stdio.h> // Nhập xuất
#include <stdlib.h> // Thư viện chuẩn
#include <math.h> // Toán học
#include <string.h> // Chuỗi ký tự
#include <ctype.h> // Ký tự
#include <time.h> // Thời gian
Trang 25Nhận xét – Biến (variable)
Biến
Lưu trữ dữ liệu cần thiết
Giá trị có thể thay đổi
Có kiểu dữ liệu cụ thể (nguyên, thực, ký tự…)
Khai báo
<Kiểu> <tên_biến_1>, <tên_biến_2>;
int x, y, tong, hieu, tich; // Số nguyên
Trang 26Nhận xét – Nhập dữ liệu
Nhập
Nhập từ bàn phím giá trị cho biến
Nhập đúng kiểu dữ liệu tương ứng với kiểu của biến
scanf( "<định dạng>" , &<tên biến>);
scanf( "%d" , &x); // d: d ecimal
scanf( "%i" , &y); // i: i ntegral
scanf( "%f" , &thuong); // f: f loat
scanf( "%c" , &kyTu); // c: c har
scanf( "%s" , &chuoi); // s: s tring
gets(<tên biến>);
Trang 28Nhận xét – Xuất
Xuất ra màn hình dòng chữ, giá trị của biến
printf("<định dạng>", <biến 1>,<biến 2>);
printf( "Tong: %d \n" , tong);
printf( "Thuong: %f \n" , thuong);
printf( "Ky tu: %c \n" , kyTu);
printf( "Chuoi: %s \n" , chuoi);
Trang 29Nhận xét – Mã giả
Dùng để biểu diễn thuật toán
Không nhất thiết chính xác về cú pháp
Không nhất thiết tuân theo một ngôn ngữ cụ thể
Ví dụ một số từ khoá: READ, WRITE, IF, ELSE, ENDIF, FOR, ENDFOR, WHILE, ENDWHILE.
Mỗi lệnh hoặc mỗi bước chỉ nên viết trên một dòng
Dùng thụt đầu dòng cho các lệnh có cấu trúc
Kết thúc lệnh bằng ENDIF, ENDFOR…
Trang 30Nhận xét – Lưu đồ thuật toán
Biểu diễn thuật toán bằng sơ đồ khối
Terminator Bắt đầu hoặc kết thúc chương
trình Data Nhập hoặc xuất dữ liệu Process Xử lý, thực hiện một thao tác
Decision Quyết định hướng xử lý theo
điều kiện Flow direction Hướng đi của luồng xử lý
Trang 326 float DT, CV; // Diện tích, chu vi
7 printf( "Nhap ban kinh hinh tron: " );
8 scanf( "%f" , &r);
9 DT = PI * r * r;
10 CV = 2 * PI * r;
11 printf( "Dien tich hinh tron: %.2f\n" , DT);
12 printf( "Chu vi hinh tron: %.2f" , CV);
13 return 0;
14 }
Trang 34Công cụ lập trình
C-Free, Dev-C, CodeBlocks, Visual Studio…
Trang 35http://borlandc.org/download-turbo-c-3-0-for- Eclipse: http://www.eclipse.org/ide/
Netbeans: https://netbeans.org/downloads/index.html
Ideone: Biên dịch online, hỗ trợ nhiều ngôn ngữ lập trình
https://ideone.com/
Trang 36Giảng viên: Instructor
Trang 37Tự tìm hiểu nội dung môn học
Thuật toán? Algorithm
Cách giải bài toán
Trang 38Bài tập 1.1 – Các thao tác lập trình
Trang 39 Lưu file nguồn: File Save, hoặc File Save
as…, hoặc kích Biểu tượng 3
Gõ chương trình Hello world vào khu vực số 4
Biên dịch, chạy chương trình, dừng chương trình ở khu vực số 5
Kiểm tra và sửa lỗi biên dịch ở khu vực số 6
Trang 40Bài tập 1.2 – Tính toán
Viết chương trình nhập vào hai số nguyên, xuất ra màn hình tổng, hiệu, tích, và thương của của số nguyên đó
Gợi ý:
#include <stdio.h> /*Khai báo thư viện*/
int main() //Chương trình chính
{
// Khai báo biến // Nhập
// Biểu thức, tính toán // Xuất
return 0; //Kết thúc }
Trang 41Tính tổng, hiệu, tích, thương (tham khảo 1)
1 #include <stdio.h> /*Khai báo thư viện*/
2 int main() //Chương trình chính
3 {
4 int x, y, tong, hieu, tich;
5 float thuong; //Khai báo
6 printf( "Nhap so nguyen x: " );
13 thuong = (float)x / y; //Biểu thức tính thương
14 printf( "Tong la %d \n" , tong); // Xuất tổng
15 printf( "Hieu la %d \n" , hieu); // Xuất hiệu
16 printf( "Tich la %d \n" , tich); // Xuất tích
17 printf( "Thuong la %f \n" , thuong); // Xuất thương
Trang 42Tính tổng, hiệu, tích, thương (tham khảo 2)
1 #include <stdio.h> //Khai báo thư viện
3 {
5 float thuong;
6 printf( "Nhap vao hai so nguyen: " );
7 scanf( "%d%d" , &x, &y); //Nhập x, y
10 printf( "%d + %d = %d \n" , x, y, tong); // Xuất
Trang 43Bài tập 1.3 – Hình chữ nhật
Viết chương trình nhập vào hai cạnh của hình chữ nhật, xuất
ra màn hình diện tích, chu vi và chiều dài đường chéo của hình chữ nhật
Trang 446 float c; // Đường chéo
7 float dienTich, chuVi;
8 printf( "Nhap hai canh: " );
9 scanf( "%f%f" , &a, &b);
13 printf( "Dien tich: %f\n" , dienTich);
14 printf( "Chu vi: %f\n" , chuVi);
15 printf( "Duong cheo: %f\n" , c);
16 return 0;
Trang 45Bài tập 1.4 – Khoảng cách
Đề bài: Viết chương trình nhập vào tọa độ của hai điểmA(xA, yA) và B(xB, yB), xuất ra màn hình khoảng cáchgiữa hai điểm
Trang 46Khoảng cách (tham khảo)
1 #include <stdio.h>
2 #include <math.h>
3 int main()
4 {
5 float xA, yA; // A(xA, yA)
6 float xB, yB; // B(xB, yB)
7 float KC; // Khoảng cách
8 printf( "Nhap A(xA, yA): " );
9 scanf( "%f%f" , &xA, &yA);
10 printf( "Nhap B(xB, yB): " );
11 scanf( "%f%f" , &xB, &yB);
12 KC = sqrt(pow(xA-xB,2) + pow(yA-yB,2));
13 printf( "Khoang cach: %f\n" , KC);
14 return 0;
Trang 47Bài tập 1.5 – Chữ số
Viết chương trình nhập vào một số nguyên có hai chữ số, xuất ra màn hình chữ số hàng chục và chữ số hàng đơn vị của số nguyên ấy