1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cơ sở lập trình - ĐH Phạm Văn Đồng

157 10 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 157
Dung lượng 1,8 MB

Nội dung

Cơ sở lập trình là học phần giúp cho sinh viên nắm được kiến thức cơ bản để cài đặt thành công một thuật toán thành chương trình bằng ngôn ngữ lập trình C. Qua đó, trang bị cho sinh viên kiến thức nền để tiếp cận và học tập tốt các ngôn ngữ lập trình khác trong các học kỳ tiếp theo.

TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG KHOA CÔNG NGHỆ THÔNG TIN TRẦN TẤN TỪ BÀI GIẢNG (Dùng cho sinh viên lớp đại học Công nghệ thông tin, đại học Sư phạm tin học) - Tài liệu lưu hành nội - LỜI NĨI ĐẦU Cơ sở lập trình học phần giúp cho sinh viên nắm kiến thức để cài đặt thành cơng thuật tốn thành chương trình ngơn ngữ lập trình C Qua đó, trang bị cho sinh viên kiến thức để tiếp cận học tập tốt ngôn ngữ lập trình khác học kỳ Bài giảng biên soạn giảng dạy cho sinh viên năm thứ nhất, bậc đại học ngành Công nghệ thông tin ngành Sư phạm tin học kể từ năm 2008, theo hình thức đào tạo niên chế Hiện chương trình đào tạo Trường Đại học Phạm Văn Đồng chuyển đổi sang đào tạo theo học chế tín Chính vậy, giảng chỉnh sửa, bổ sung cho phù hợp với hình thức đào tạo theo học chế tín Cũng nhân tơi xin chân thành cám ơn hội đồng chuyên môn khoa Công nghệ thông tin, Th.S Huỳnh Triệu Vỹ Th.S Võ Đức Lân dành thời gian đọc đóng góp nhiều ý kiến quý báu để giảng hoàn chỉnh hơn, đáp ứng nhu cầu học tập sinh viên Khoa Công nghệ thông tin - Trường Đại học Phạm Văn Đồng Bài giảng không tránh khỏi thiếu sót, mong bạn đồng nghiệp đóng góp ý kiến để giảng hoàn thiện lần chỉnh sửa sau Xin chân thành cám ơn quý thầy cô, bạn đồng nghiệp ! Quảng Ngãi, ngày 25/12/2013 TRẦN TẤN TỪ Bài giảng Cơ sở lập trình CHƯƠNG 1: -1- CÁC THÀNH PHẦN CƠ BẢN Mục tiêu Kết thúc chương, sinh viên có thể: Nắm thành phần ngơn ngữ lập trình C: ký hiệu, từ khóa, tên cách đặt tên, cách ghi lời thích Nắm cấu trúc chung chương trình C Hiểu vận dụng phép toán, hàm xây dựng cho kiểu liệu sở: kiểu số nguyên, kiểu số thực, kiểu ký tự, kiểu boolean 1.1 Bộ ký hiệu từ khóa 1.1.1 Bộ ký hiệu - 26 chữ la tinh hoa: A, B, …, Z - 26 chữ la tinh thường: a, b, …, z - 10 chữ số thập phân: 0,1,…,9 - Các ký hiệu toán học: +, -, *, /, = , (, ) - Các ký hiệu đặc biệt: , ; “ ‘ _ @ # $ ! ^ [ ] { } … - Dấu cách hay khoảng trống 1.1.2 Từ khóa Là từ dùng riêng ngơn ngữ lập trình C từ khóa có ý nghĩa tác dụng cụ thể * Chú ý: - Không thể định nghĩa lại từ khóa - Các từ khóa C viết dạng chữ thường Một số từ khóa thơng dụng hay dùng ngơn ngữ lập trình C auto break case char continue default double else extern float for goto if int long register return short sizeof static struct switch typedef union usnigned void volatile while asm … 1.1.3 Tên cách đặt tên Trong chương trình, người lập trình dùng nhiều tên: tên chương trình, tên biến, tên hằng, tên hàm,… Mọi tên phải khai báo trước sử dụng Qui tắc đặt tên: - Tên bao gồm dãy ký tự liền chữ a,…,z, A,… Z, chữ số 0, …, dấu gạch nối Giảng viên: Th.S Trần Tấn Từ - Khoa CNTT – Đại học Phạm Văn Đồng Bài giảng Cơ sở lập trình -2- - Tên khơng bắt đầu chữ số - Tên không chứa ký tự đặc biệt dấu cách, dấu chấm câu,… Số ký tự tối đa tên Turbo C 32 - Tên khơng trùng với từ khóa - C ngơn ngữ lập trình phân biệt chữ hoa chữ thường, tên NGHIEM khác với tên: Nghiem, nghiem,… - Không đặt tên tiếng Việt (C xem cách làm sai cú pháp) - Các ví dụ đặt tên: + Một số tên đặt đúng: Gia_tri, _DX, pi, … + Một số tên đặt sai: 3X, PI$, Bien 1, 1.1.4 Chú thích Khi viết chương trình bạn nên thêm vào lời thích chương trình sáng sủa dễ hiểu Trình biên dịch khơng biên dịch thích để tạo mã chương trình mà có tác dụng thuyết minh thêm cho dễ hiểu Phần văn nằm cặp ký hiệu mở /* đóng */ phần thích Phần thích nằm nhiều dịng, miễn nằm cặp dấu mở đóng nêu Lưu ý: Trong C++ lời thích nằm sau cặp dấu // viết dòng 1.2 Cấu trúc chung chương trình C Cấu trúc tổng thể chương trình C thường có khối thơng dụng sau: ………………………………………………………………………………… #include /* để gọi tập tin tiền xử lý */ #define /* định nghĩa số */ typedefs /* định nghĩa kiểu liệu */ ………………………………………………………………………………… Function prototype /* khai báo nguyên mẫu hàm gồm tên tham số */ ………………………………………………………………………………… Khai báo biến ………………………………………………………………………………… main() /* chương trình C bắt buộc phải có hàm main */ { Khai báo biến cục bộ, hàm main Các câu lệnh thực hàm main return } Giảng viên: Th.S Trần Tấn Từ - Khoa CNTT – Đại học Phạm Văn Đồng Bài giảng Cơ sở lập trình -3- ………………………………………………………………………………… Function prototype /* định nghĩa nội dung tường minh hàm */ { Khai báo biến, hàm Các câu lệnh thực hàm } ………………………………………………………………………………… Như vậy, chương trình C thường bao gồm thành phần: tiền xử lý, định nghĩa: kiểu, hằng, khai báo biến ngoài, hàm tự tạo, hàm main Trong đó: + #include /* để gọi tập tin tiền xử lý */ Ví dụ 1.1: #include + #define /* định nghĩa số */ Ví dụ 1.2: #define MAX 100 + typedef /* định nghĩa kiểu liệu */ Ví dụ 1.3: typedef int Songuyen; + Function prototype /* khai báo nguyên mẫu hàm gồm tên tham số */ Trong phần khai báo nguyên mẫu hàm, bạn kiểu giá trị trả hàm, tên hàm, tham số hình thức hàm Ví dụ 1.4: Khai báo ngun mẫu hàm tính diện tích hình trịn float Tinh_dien_tich(float radius); + Khai báo biến (biến toàn cục): Là nơi khai báo biến có tầm tác dụng chương trình Ví dụ 1.5: int n; + Trong chương trình C có nhiều hàm, hàm main hàm chính, bắt buộc phải có câu lệnh thực từ xuống Về nguyên tắc hàm phải trả lại giá trị cho tên hàm, không muốn sử dụng giá trị trả về, bạn viết sau: void main() Từ khóa void để hàm khơng có giá trị riêng (tức hàm khơng mang giá trị cụ thể thực xong hàm) + /* định nghĩa nội dung tường minh hàm */ Ví dụ 1.6: Định nghĩa nội dung hàm tính diện tích hình trịn với tham số radius (bán kính hình trịn) float Tinh_dien_tich(float radius) #define PI 3.14 Giảng viên: Th.S Trần Tấn Từ - Khoa CNTT – Đại học Phạm Văn Đồng Bài giảng Cơ sở lập trình -4- { float dientich; dientich = PI*radius*radius; return(dientich); } Lưu ý: Định nghĩa hàm Tinh_dien_tich viết phía hàm main * Một số ví dụ: Ví dụ 1.7: Chương trình in hình chữ “Chao cac ban” “Hen gap lai” Giải #include main() { printf(“Chao cac ban\n”); printf(“Hen gap lai\n”); getch(); } Giải thích chương trình ví dụ 1.7 #include : Khai báo tập tin tiền xử lý stdio.h (viết tắt từ standard input/output) tập tin tiền xử lý chứa hàm vào/ra chuẩn Trong chương trình có sử dụng hàm printf (hàm chuẩn) định nghĩa tập tin stdio.h Hàm printf hàm cho in hình nội dung nằm cặp dấu “ ” Ký tự \n ký tự điều khiển xuống dịng Phần thân chương trình bao gồm đoạn chương trình: main() { … } getch(); Khi chương trình viết hình câu “Chao cac ban” “Hen gap lai” dừng lại cho người sử dụng xem Nếu khơng có lệnh chương trình trở hình văn chương trình, người sử dụng khơng xem kết quả, lúc phải bấm tổ hợp phím Alt + F5 xem kết Ví dụ 1.8: Chương trình tính diện tích hình tròn Giải Giảng viên: Th.S Trần Tấn Từ - Khoa CNTT – Đại học Phạm Văn Đồng Bài giảng Cơ sở lập trình #include main() { float R,Dien_tich; printf(“Nhap ban kinh R = “); scanf(“%f”,&R); Dien_tich = 3.14*R*R; printf(“Dien tich hinh tron co ban kinh %f %f”,R,Dien_tich); getch(); } Giải thích chương trình ví dụ 1.8 float R, Dien_tich; Khai báo biến R Dien_tich có kiểu số thực printf(“Nhap ban kinh R = “); in hình dịng: Nhap ban kinh R = scanf(“%f”,&R); Hàm đọc giá trị từ bàn phím vào cho biến R %f mã định dạng để qui định đọc giá trị vào cho biến R có kiểu số thực, &R hiểu đọc giá trị vào cho ô nhớ biến R Dòng lệnh printf(“Dien tich hinh tron co ban kinh %f %f”,R,Dien_tich); In giá trị biến R biến Dien_tich với qui cách in số thực Ví dụ 1.9: Chương trình tính diện tích hình trịn có sử dụng chương trình Giải #include main() float Tinh_dien_tich(float radius); main() { float R; pritnf(“Nhap ban kinh R = “); scanf(“%f”,&R); printf(“Dien tich hinh tron = %f “,Tinh_dien_tich(R)); getch(); } float Tinh_dien_tich(float radius) #define PI 3.14 { float dientich; dientich = PI*radius*radius; Giảng viên: Th.S Trần Tấn Từ - Khoa CNTT – Đại học Phạm Văn Đồng -5- Bài giảng Cơ sở lập trình return(dientich); } Giải thích chương trình ví dụ 1.9 #define PI 3.14 Đây khối ghép định nghĩa macro Với định nghĩa này, ngơn ngữ lập trình C dịch chương trình, chỗ chương trình xuất tên PI thay 3.14 Việc tính diện tích thực hàm Tinh_dien_tich với tham số radius Nguyên mẫu hàm Tinh_dien_tich khai náo trước hàm main() định nghĩa tường minh nội dung hàm sau hàm main 1.3 Kiểu liệu sở 1.3.1 Kiểu liệu Dữ liệu dạng biểu diễn vật lý thông tin Những dạng liệu xử lý máy tính điện tử gồm: Các ký tự, hình ảnh, âm thanh, tri thức, kiện, luật dẫn Theo nghĩa rộng, liệu thơ số, ký tự, hình ảnh hay kết khác thiết bị chuyển đổi lượng vật lý thành ký hiệu Các liệu loại thường xử lý tiếp người đưa vào máy tính Trong máy tính, liệu lưu trữ xử lý chuyển cho người hay máy tính khác Dữ liệu thơ thuật ngữ tương đối, liệu xử lý bước liệu thô bước Trong máy tính điện tử, liệu biểu diễn chuỗi ký hiệu bảng chữ đó, mà phổ biến bảng chữ nhị phân (gồm ký hiệu “0” “1”) Một chương trình máy tính tập hợp liệu hiểu lệnh Kiểu liệu tập hợp giá trị mà biến thuộc kiểu nhận xác định số phép toán Các kiểu liệu thường quy định ngơn ngữ lập trình, hay nói cách khác ngơn ngữ lập trình có tập kiểu liệu khác Trong ngôn ngữ lập trình, kiểu liệu biểu diễn miền giá trị xác định đó, giới hạn phụ thuộc vào kích thước vùng nhớ biểu diễn số Vì vậy, thơng tin đặc trưng kiểu liệu bao gồm: + Tên kiểu liệu + Kích thước vùng nhớ biểu diễn (tức miền giá trị) + Các phép tốn sử dụng kiểu liệu 1.3.2 Kiểu số nguyên Là tập hợp số nguyên biểu diễn máy tính định nghĩa với số từ khóa Mỗi từ khóa tương ứng với kiểu số nguyên có dải biểu diễn giá trị phạm vi định Nhưng kiểu số nguyên ngôn Giảng viên: Th.S Trần Tấn Từ - Khoa CNTT – Đại học Phạm Văn Đồng -6- Bài giảng Cơ sở lập trình -7- ngữ lập trình C kiểu số nguyên có dấu, định nghĩa với từ khóa int chiếm byte Bảng từ khóa số nguyên phạm vi biểu diễn Kiểu biến Từ khóa Số byte Phạm vi biểu diễn Character char -128 +127 Integer int -32768…+32767 Short Integer short -32768…+32767 Unsigned character unsigned char 0…255 Unsigned Integer unsigned int 65535 Unsigned Short Integer unsigned short 65535 Long Integer long -2147483648… +2147483647 Unsigned Long Integer Unsigned long 0… 4294967295 Lưu ý: Kiểu char thực chất kiểu ký tự, song C cho phép dùng ký tự số nguyên Vì vậy, tính tốn biểu thưc số học kiểu char sử dụng số nguyên (chỉ mã ASCII tương ứng ký tự đó) tính tốn biểu thức ký tự hiểu ký tự Đây mềm dẻo ngơn ngữ lập trình C Có nhiều phép tính định nghĩa cho số nguyên: phép tính số học, phép tính quan hệ, phép tính logic số học Bảng liệt kê phép tính số học kiểu số ngun Phép tốn Ký hiệu Ví dụ Cộng + a+b Trừ - a-b Nhân * a*b Chia lấy phần nguyên / a/b Chia lấy số dư % a%b Về nguyên tắc phép chia số nguyên cho kết số nguyên Muốn nhận kết số thực, bạn phái viết (float) a / b Ví dụ 1.10: a = 15; b = 2; Vậy kết a/b 15/2 = Bạn muốn nhận kết phép chia số thực phải viết: (float) a/b; Lúc 15/2 = 7.5 Để khởi tạo biến có kiểu nguyên ta viết: int i; i = 10; Hoặc viết int i = 10; Giảng viên: Th.S Trần Tấn Từ - Khoa CNTT – Đại học Phạm Văn Đồng Bài giảng Cơ sở lập trình Hằng số nguyên có định kiểu trước: Để ghi số nguyên với kiểu định trước bạn ghi thêm ký tự vào cuối dãy số: L cho kiểu long, U cho kiểu Unsigned Integer, UL cho kiểu Unsigned Long Ví dụ 1.11: 20000U số nguyên theo kiểu Unsigned Integer; * Cách biểu diễn số nguyên dạng số Hecxa: + Ngoài cách viết theo dạng số thập phân, C quy ước cho phép viết số nguyên dạng số Hecxa, ký tự bắt đầu 0x 0X Chẳng hạn số 65 hệ thập phân viết dạng số Hecxa 0X41 + Nếu viết số nguyên dạng số hệ số ký tự bắt đầu Chẳng hạn số 65 hệ thập phân viết dạng số hệ số là: 0101 Hai cách viết thuận lợi cho người lập trình hệ thống Lúc đó, byte biểu diễn hai chữ số Hecxa số Hecxa biểu diễn cụm số nhị phân bít Chẳng hạn: số 255 hệ thập phân, biểu diễn hệ Hecxa 0xFF Ví dụ 1.12: Chương trình tính tổng số ngun Giải #include main() { int m=5,n=10; long tong; tong = m+n; getch(); } 1.3.3 Kiểu số thực Là tập hợp số thực biểu diễn máy tính định nghĩa số từ khóa: float, double, long double Trong máy tính số thực biểu diễn dạng: dạng bình thường dạng có phần mũ (dạng số khoa học) + Dạng bình thường: 3.14, 5.0 + Dạng số khoa học: 1.254567E+02 tương đương với 1.254567*102 = 125.4567 Phạm vi biểu diễn độ xác số thực lớn nhiều so với số nguyên nên số thực thích hợp với đại lượng cần giá trị lớn độ xác cao Giảng viên: Th.S Trần Tấn Từ - Khoa CNTT – Đại học Phạm Văn Đồng -8- Bài giảng Cơ sở lập trình -141- { clrscr(); chon = menu(); switch (chon) { case : nhap(); break; case : xem(); break; case : sapxep(); break; case : exit(0); } } } int menu(void) { int c; char s[10]; clrscr(); printf("1 Nhap danh sach \n"); printf("2 Xem danh sach \n"); printf("3 Sap xep danh sach \n"); printf("4 Thoat \n"); { printf("Bam so de chon (1/2/3/4)"); gets(s); c = atoi(s); } while (c 4); return c; } int n; void nhap(void) { int T =1; Giảng viên: Th.S Trần Tấn Từ - Khoa CNTT – Đại học Phạm Văn Đồng Bài giảng Cơ sở lập trình -142- char c; clrscr(); f = fopen("D:\\DULIEU.DAT","wb"); i = 1; while (T) { clrscr(); printf("\n Nguoi thu %d",i); printf("\n Ho dem :");gets(hs.hodem); if (hs.hodem[0] =='\0') break; printf("\n Ten :");gets(hs.ten); printf("\n Tuoi :");scanf("%d",&hs.tuoi); fwrite(&hs,sizeof(hs),1,fp); while (getchar() != '\n'); i++; } fclose(f); } void xem(void) { int j; char c; clrscr(); j = 0; printf("STT Ho va ten Tuoi\n"); f = fopen("D:\\DULIEU.DAT","rb"); while (fread(&hs,sizeof(hs),1,f),!feof(f)) { printf("%3d ",j+1); printf("%-20s",hs.hodem); printf("%-10s",hs.ten); printf("%5d",hs.tuoi); printf("\n"); j++; } Giảng viên: Th.S Trần Tấn Từ - Khoa CNTT – Đại học Phạm Văn Đồng Bài giảng Cơ sở lập trình -143- fclose(f); getch(); } void sapxep(void) { struct hocsinh ds[10]; int j,sl=0; clrscr(); f = fopen("D:\\DULIEU.DAT","r+b"); while (fread(&hs,sizeof(hs),1,f),!feof(f)) { sl++; ds[sl] = hs; } for (i=1;i

Ngày đăng: 11/05/2021, 00:39

w