Bài giảng Tin học đại cương: Chương 1 - Tổng quan về ngôn ngữ C hướng đến trình bày lịch sử phát triển; các phần tử cơ bản của ngôn ngữ C; cấu trúc cơ bản của chương trình C; biên dịch chương trình C;...
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Phần 3: LẬP TRÌNH @it-hut.edu Nội dung Phần 3: Lập trình C • Chương 1: Tổng quan ngơn ngữ C • Chương 2: Kiểu liệu biểu thức C • Chương 3: Cấu trúc lập trình C • Chương 4: Mảng, trỏ xâu ký tự • Chương 5: Cấu trúc • Chương 6: Hàm • Chương 7: Tệp liệu 29/11/15 Copyright by SOICT Nội dung Chương 1: Tổng quan ngôn ngữ C • Lịch sử phát triển • Các phần tử ngơn ngữ C • Cấu trúc chương trình C • Biên dịch chương trình C • Trình biên dịch Turbo C++ • Cài đặt sử dụng Turbo C++ 3.0 29/11/15 Copyright by SOICT Lịch sử phát triển • Đầu thập kỷ 70, lập trình hệ thống dựa hợp ngữ (Assembly) – Cơng việc nặng nề, phức tạp – Khó chuyển đổi chương trình hệ máy tính khác • Cần ngơn ngữ lập trình hệ thống có tính khả chuyển cao để viết lại hệ điều hành Unix Lịch sử phát triển • Đặc điểm ngơn ngữ lập trình C – Ngơn ngữ lập trình hệ thống – Tính khả chuyển, linh hoạt cao – Có mạnh xử lý liệu số, văn bản, sở liệu • C thường sử dụng để viết chương trình hệ thống – Hệ điều hành Unix có 90% mã C, 10% hợp ngữ – Các trình điều khiển thiết bị (device driver) – Xử lý ảnh … Lịch sử phát triển • Các phiên ngôn ngữ C – ANSI C: C chuẩn (1989) – Các phiên khác xây dựng dựa ANSI C • Đưa thêm thư viện bổ sung thư viện ANSI C • Các trình biên dịch phổ biến – Turbo C++ Borland C++ Borland Inc – MSC VC Microsoft Corp – GCC GNU project … Nội dung Chương 1: Tổng quan ngơn ngữ C • Lịch sử phát triển • Các phần tử ngơn ngữ C • Cấu trúc chương trình C • Biên dịch chương trình C • Trình biên dịch Turbo C++ • Cài đặt sử dụng Turbo C++ 3.0 Các phần tử ngôn ngữ C Tập ký tự Từ khóa Định danh Các kiểu liệu Hằng số Biến Hàm Biểu thức Câu lệnh 10 Chú thích Tập ký tự • Tập ký tự tập phần tử tạo nên chương trình – Tổ hợp ký tự -> từ – Liên kết từ theo cú pháp -> câu lệnh – Tổ chức câu lệnh -> chương trình Tập ký tự • Tập ký tự C – – – – – – – 26 chữ hoa:A B C X Y Z 26 chữ thường:a b c … x y z 10 chữ số: Các kí hiệu tốn học:+ - * / = < > Các dấu ngăn cách: ; , : space tab Các dấu ngoặc:( ) [ ] { } Các kí hiệu đặc biệt:_ ? $ & # ^ \ ! ‘ “ ~ v.v Câu lệnh static register # include # include void fct() { static int count = 1; printf("\n Day la lan goi ham fct lan thu %2d", count++); } void main(){ int i; for(i = 0; i < 10; i++) fct(); getch(); } 351 Câu lệnh static register Day la lan goi ham fct lan thu Day la lan goi ham fct lan thu Day la lan goi ham fct lan thu Day la lan goi ham fct lan thu Day la lan goi ham fct lan thu Day la lan goi ham fct lan thu Day la lan goi ham fct lan thu Day la lan goi ham fct lan thu Day la lan goi ham fct lan thu Day la lan goi ham fct lan thu 10 352 Câu lệnh static, register • Biến register – Thanh ghi có tốc độ truy cập nhanh RAM, nhớ – Lưu biến ghi tăng tốc độ thực chương trình – Cú pháp register tên_biến; – Lưu ý: số lượng biến register không nhiều thường với kiểu liệu nhỏ int, char 353 Nội dung Khái niệm hàm Khai báo sử dụng hàm Phạm vi biến Truyền tham số 354 Ví dụ # include # include void swap(int a, int b) { int x = a; a = b; b = x; return; } void main(){ int a = 5, b = 100; printf("Truoc: a=%d, b=%d \n\n",a,b); swap(a,b); printf("Sau : a=%d, b=%d\n\n",a,b); return; } 355 Truyền theo trị truyền theo biến • Truyền theo trị – Dựa nguyên tắc truyền biến truyền – Những câu lệnh thay đổi giá trị tham số hình thức khơng ảnh hưởng tới biến truyền • Truyền theo biến – Tham số truyền thực biến thao tác thi hành trực tiếp với biến – Những câu lệnh thay đổi giá trị tham số hình thức ảnh hưởng tới biến truyền 356 Truyền theo biến • Thực chất truyền theo địa biến • Khai báo hàm – Khai báo trỏ, trỏ tới đối tượng có kiểu muốn truyền vào – Ví dụ: void swap (int *pa, int *pb); • Truyền tham số – Địa biến truyền – Ví dụ: swap(&a,&b) 357 Ví dụ # include # include void swap(int * pa, int * pb) { int x = *pa; *pa = *pb; *pb = x; return; } void main(){ int a = 5, b = 100; printf("Truoc: a=%d, b=%d \n\n",a,b); swap(&a,&b); printf("Sau : a=%d, b=%d\n\n",a,b); return; } 358 Nội dung Phần 3: Lập trình C • Chương 1: Tổng quan ngơn ngữ C • Chương 2: Kiểu liệu biểu thức C • Chương 3: Cấu trúc lập trình C • Chương 4: Mảng xâu ký tự • Chương 5: Cấu trúc • Chương 6: Hàm • Chương 7: Tệp liệu 29/11/15 Copyright by SOICT 359 Bài tập Viết hàm tìm bội số chung nhỏ hai số nguyên dương a,b tham số hàm Viết chương trình tìm bội số chung nhỏ dãy số nguyên dương a1, a2, …, an Dãy số có khơng q 100 phần tử, n nhập vào từ bàn phím Viết chương trình cho người dùng nhập vào từ bàn phím dãy số người dùng nhập số -1 Lưu dãy số vào mảng Đưa số dãy số có giá trị nằm khoảng [a,b] với a,b số nguyên nhập vào từ bàn phím 360 Bài tập Đưa giá trị lớn dãy gọi max, giá trị nhỏ dãy gọi Thống kê vào mảng số số có giá trị 1,2, … max Cho người dùng nhập vào từ bàn phím xâu ký tự người dùng nhập xâu rỗng Đếm số xâu có độ dài n, n nguyên nhập vào từ bàn phím Xác định độ dài xâu dài gọi max_len 10 Thống kê vào môtj mảng số xâu có độ dài 1, 2, …, max_len 361 Bài tập Địa email chuỗi ký tự có dấu @ phân cách tên tài khoản tên miễn Ví dụ tuananh@gmail.com Tên tài khoản tên miền khơng có dấu cách Viết chương trình C thực hiện: -Nhập từ bàn phím chuỗi ký tự -Kiểm tra chuỗi có địa email không đưa thông báo -Đưa tên tài khoản tên miền trường hợp chuỗi địa email 362 Bài tập Một quan có khơng q 50 xe, Mỗi hồ sơ xe gồm: Nhãn hiệu xe, biển số, tên hãng, dung tích xi lanh Viết chương trình C thực hiện: -Xây dựng kiểu liệu để lưu hồ sơ xe -Nhập hồ sơ xe cho quan Quá trình nhập dừng đủ 50 xe người nhập trả lời “No” hỏi -Sắp xếp danh sách xe theo dung tích xi lanh lớn dần -In hình Nhãn hiệu xe, Dung tích xi lanh cuả xe có dung tích xi lanh nhỏ 363 Bài tập Nhập từ bàn phím xâu, q trình nhập dừng gặp ký tự # độ dài xâu vượt 50 Các từ ngăn cách nhiều ký tự trắng -Có từ bắt đầu chữ “H”? -Đưa hình theo thứ tự ngược lại sau xóa hết ký tự trắng xây Ví dụ: Xâu ban đầu: “thi chuyen he” Xâu đưa ra: “ehneyuhciht” 364 365 ... Borland C+ + Borland Inc – MSC VC Microsoft Corp – GCC GNU project … Nội dung Chương 1: Tổng quan ngơn ngữ C • Lịch sử phát triển • C c phần tử ngơn ngữ C • C u tr c chương trình C • Biên dịch chương. .. 29 /11 /15 Copyright by SOICT Nội dung Chương 1: Tổng quan ngơn ngữ C • Lịch sử phát triển • C c phần tử ngơn ngữ C • C u tr c chương trình C • Biên dịch chương trình C • Trình biên dịch Turbo C+ +... Lập trình C • Chương 1: Tổng quan ngơn ngữ C • Chương 2: Kiểu liệu biểu th c C • Chương 3: C u tr c lập trình C • Chương 4: Mảng, trỏ xâu ký tự • Chương 5: C u tr c • Chương 6: Hàm • Chương 7: