Giáo trình về Kỹ thuật lập trình - pdf 17

Download miễn phí Giáo trình về Kỹ thuật lập trình



MụC LụC
CHƯƠNG i ĐạI CƯƠNG Về LậP TRìNH---------------------------------------------------1
I. Khái niệm thuật toán---------------------------------------------------------------------------1
I.1. Khá i niệ m---------------------------------------------------------------------------------------------------1
I.2. Cá c tí nh chấ t đặ c trưng của thuậ t toá n -----------------------------------------------------1
I.3. Phân loại-----------------------------------------------------------------------------------------------------1
II. Mô tả thuật toán bằng lưu đồ ----------------------------------------------------1
II.1. Lưu đồ ------------------------------------------------------------------------------------------------------1
II.2. Cá c ký hiệ u trê n lưu đồ ---------------------------------------------------------------------------1
II.3. Một số ví dụ biểu diễ n thuậ t toá n bằ ng lưu đồ----------------------------------------2
III. CáC NGôN NGữ LậP TRìNH & CHươNG TRìNH DịCH--------------------5
III.1. Ngôn ngữ lậ p trì nh----------------------------------------------------------------------------------5
III.2. Chương trì nh dịch------------------------------------------------------------------------------------6
CHươNG 2 LàM QUEN VớI NGôN NGữ C---------------------------------------------7
* Giới thiệu ngôn ngữ C-------------------------------------------------------------------------7
I. CáC KHáI NIệM Cơ BảN----------------------------------------------------------------------------7
I.1. Cấ u trúc cơ bả n của một chương trì nh C--------------------------------------------------7
I.2. Kiểu dữ liệu cơ bản----------------------------------------------------------------------------------13
I.3. Biế n-----------------------------------------------------------------------------------------------------------14
I.4 Hằ ng-----------------------------------------------------------------------------------------------------------18
I.5. Phép toá n--------------------------------------------------------------------------------------------------20
* Sự chuyể n kiể u-----------------------------------------------------------------------------------------29
* Mức độ ưu tiê n của cá c phép toá n----------------------------------------------------------29
I.6. Chuỗi---------------------------------------------------------------------------------------------------------30
II. Các cấu trúc điều khiển trong C----------------------------------------------33
II.1Cấ u trúc tuầ n tự (Sequence) ------------------------------------------------------------------33
II.2. Cấ u trúc chọn------------------------------------------------------------------------------------------34
II.2.1. Lệ nh if else--------------------------------------------------------------------------------------34
II.2.2. Lệ nh switch_case----------------------------------------------------------------------------35
II.3. Cấ u trúc lặ p---------------------------------------------------------------------------------------------37
II.3.1. Lệ nh while---------------------------------------------------------------------------------------37
II.3.2. Lệ nh do while----------------------------------------------------------------------------------38
II.3.3. Lệ nh for--------------------------------------------------------------------------------------------39
* Phá t biể u break, continue, goto--------------------------------------------------------------40
Bà i tậ p----------------------------------------------------------------------------------------------------------------41
Kỹ thuậ t lậ p trì nh 132
III. Hàm - Đệ quy------------------------------------------------------------------------------------------45
III.1. Hà m--------------------------------------------------------------------------------------------------------45
III.2. Đệ qui (Recursion)--------------------------------------------------------------------------------52
IV. Structure-----------------------------------------------------------------------------------------------54
IV.1. Định nghĩ a------------------------------------------------------------------------------------55
IV.2. Khai bá o---------------------------------------------------------------------------------------55
V. FILE----------------------------------------------------------------------------------------------------------------56
V.1. File vă n bả n---------------------------------------------------------------------------------------------56
V.2. File nhị phâ n (file có cấ u trúc)--------------------------------------------------------------61
V.3. Phá t hiệ n lỗi khi truy xuấ t tậ p tin----------------------------------------------------------66
Bà i tậ p----------------------------------------------------------------------------------------------------------------67
CHươNG 3. CáC THUậT TOáN TRÊN CấU TRúC Dữ LIệU MảNG 69
I. Mảng không sắp xếp và thuật toán tìm kiếm ------------------69
trên mảng chưa có thứ tự
I.1. Một số khá i niệ m về mả ng----------------------------------------------------------------------69
I.2. Thuậ t toá n tì m kiếm trê n mả ng chưa có thứ tự--------------------------------------71
II. Các thuật toán sắp xếp-------------------------------------------------------------------73
II.1. Sắ p xế p theo phương phá p Bubble_Sort------------------------------------------------73
II.2. Sắ p xế p theo phương phá p Quick_Sort--------------------------------------------------75
III. Tìm kiếm trên mảng đã có thứ tự---------------------------------------------79
III.1. Tì m kiế m nhanh bằ ng phương phá p lặp-----------------------------------------------79
III.2. Phép tì m kiế m nhị phâ n------------------------------------------------------------------------80
III.3. Phép tì m kiế m nhị phâ n đệ qui-------------------------------------------------------------81
Bà i tậ p----------------------------------------------------------------------------------------------------------------82
CHƯƠNG 4 CON TRỏ (POINTER)----------------------------------------------------------84
I. ĐịNH NGHĩA-------------------------------------------------------------------------------------------------84
I.1. Khai bá o----------------------------------------------------------------------------------------------------84
I.2. Truyề n địa chỉ cho hà m---------------------------------------------------------------------------85
II Các phép toán trên biến con trỏ-----------------------------------------------85
II.1. Toá n tử địa chỉ &-----------------------------------------------------------------------------------85
II.2. Toá n tử nội dung * ---------------------------------------------------------------------------------85
II.3. Phép cộng trừ biến con trỏ với một số nguyê n--------------------------------------86
II.4. Phép gá n và phép so sá nh-----------------------------------------------------------------------86
II.5. Sự chuyể n kiể u----------------------------------------------------------------------------------------86
II.6. Khai bá o một con trỏ hằ ng và con trỏ chỉ đế n đối tượng hằ ng------------87
III. Sự tương quan giữa con trỏ và mảng-----------------------------------87
Kỹ thuậ t lậ p trì nh 133
IV. Con trỏ và chuỗi--------------------------------------------------------------------------------91
IV.1. Khai bá o-------------------------------------------------------------------------------------------------91
IV.2. Xét một số ví dụ về cá c hà m xử lý chuỗi---------------------------------------------91
IV.3. Mả ng con trỏ chỉ đế n chuỗi------------------------------------------------------------------93
Bà i tậ p----------------------------------------------------------------------------------------------------------------95
CHƯƠNG 5 CáC THUậT TOáN TRÊN CấU TRúC ---------------------------96
DANH SáCH LIÊN KếT (LINKED LIST).
I. Khái niệm----------------------------------------------------------------------------------------------------------------96
II. Các phép toán trên danh sách liên kết-----------------------------------97
II.1. Tạ o danh sá ch-----------------------------------------------------------------------------------------97
II.2. Cậ p nhậ t danh sách---------------------------------------------------------------------------------99
II.3. Duyệ t danh sá ch------------------------------------------------------------------------------------100
II.4. Tì m kiế m-----------------------------------------------------------------------------------------------100
II.5. Sắ p xế p--------------------------------------------------------------------------------------------------101
Bà i tậ p--------------------------------------------------------------------------------------------------------------102
CHươNG 6 các thuật toán trên cấu trúc câY---------------------104
I. Phân loại cây----------------------------------------------------------------------------------------104
I.1. Một số khá i niệ m cơ bả n-----------------------------------------------------------------------104
I.2. Cá ch biể u diễ n cây---------------------------------------------------------------------------------106
I.3. Biể u diễ n thứ tự các nút trong câ y---------------------------------------------------------106
II. Cây nhị phân (Binary tree)----------------------------------------------------------107
II.1. Định nghĩ a---------------------------------------------------------------------------------------------107
II.2. Cá c phép toá n trên câ y nhị phâ n----------------------------------------------------------110
1. Tạ o câ y--------------------------------------------------------------------------------------------------110
2. Cậ p nhậ t câ y-----------------------------------------------------------------------------------------112
3. Cá c phép duyệ t cây------------------------------------------------------------------------------116
III. cây nhị phân TìM KIếM cân bằng (AVL)--------------------------------117
III.1. Định nghĩ a-------------------------------------------------------------------------------------------117
III.2. Cá c phép toá n trên câ y AVL--------------------------------------------------------------118
III.2.1. Thê m nút---------------------------------------------------------------------------------------118
III.2.2. Cậ p nhậ t câ y---------------------------------------------------------------------------------126
III.2.3. Cá c phép duyệt câ y----------------------------------------------------------------------127
Bà i tậ p--------------------------------------------------------------------------------------------------------------129



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

qua
Cú pháp: remove (tê n file)
Hà m remove trả về 0 : xóa thà nh công
trả về -1 : có lỗi khi xóa file, và lúc nà y biế n errno có 1 trong
2 giá trị sau:
ENOENT : không tì m thấ y file muốn xóa
EACCES : không cho phép xóa file mà bạ n chỉ định
Lưu ý : File nê n đóng trước khi xóa.
Ví dụ: Xóa file do ta chỉ định.
#include
void main()
{ char filename[80];
/* prompt for file name to delete */
printf("File muon xoa: ");
gets(filename);
/* delete the file */
if (remove(filename) == 0)
printf("Removed %s.\n",filename);
else
perror("remove"); // in thông bá o lỗi mà hà m remove gâ y ra
}
V.2. File nhị phân (file có cấu trúc)
File nhị phâ n là file dùng để lưu trữ cá c cấ u trúc dưới dạ ng struct hoặ c
union
V.2.1. Khai báo:
FILE * fptr;
V.2.2. Mở file:
fptr = fopen (tê nfile, “kiể u”);
. rb ( b: binary): mở chỉ để đọc
. wb : để ghi. Nế u file đ∙ có thì xóa trước khi mở.
. ab : nối thê m; mở để ghi thê m và o cuối file, nế u file chưa có
thì tạ o mới
. rb+ : mở file đ∙ có để cậ p nhậ t (đọc/ghi)
. wb+ : tạ o file mới cho phép đọc/ghi
. ab+ : mở để nối thê m về cuối file, cho phép đọc/ghi
Kỹ thuật lập trì nh 63
V.2.3. Đóng file:
fclose (fptr)
V.2.4. Đọc/ghi file: Hà m fread : đọc số mẫ u tin(cấ u trúc) trong file fptr
và o .
fread (& biế n cấu trúc, sizeof (biế n cấu trúc) , số cấu trúc, fptr);
Hà m fread trả về số cấ u trúc đọc được
Hà m fwrite ghi dữ liệ u trong và o file fptr.
fwrite (&biế n cấu trúc, sizeof (biế n cấu trúc) , số cấu trúc, fptr);
Hà m fwrite trả về số cấ u trúc ghi được lê n file
Chú ý :
- Để kiể m tra việ c đọc file ta kiể m tra số cấ u trúc được đọc. Nế u số cấ u trúc
trả về bằ ng 0 mà ta cầ n đọc là 1 cấ u trúc thì điề u đó chứng tỏ đ∙ hế t file.
* Ghi một mảng cấu trúc lê n file
fwrite(tê nmả ng, sizeof (tê nmả ng), 1, fptr);
⇔ for (i= 0; i< n; i++)
fwrite (&tê nmả ng, sizeof (tê nmả ng , 1, fptr);
Ví dụ 1: Chương trì nh ghi lê n file nhị phâ n
#include
#include
#include
void main()
{ struct hocvien
{ char hoten[30];
int tuoi;
} hv;
FILE *fptr;
char tenfile[67];
char tuoi[3];
printf("Nhap ten file :");
gets(tenfile);
if ((fptr=fopen(tenfile,"wb")) == NULL) // mở file nhị phâ n để ghi
{ printf ("Khong the tao file\n"); exit(0);
}
do
{ printf("Nhap ho ten hoc vien :");
Kỹ thuật lập trì nh 64
gets(hv.hoten);
if (strlen(hv.hoten) !=0)
{ printf("Nhap tuoi :");
gets(tuoi);
hv.tuoi = atoi(tuoi); // macro doi chuoi qua so nguyen
fwrite(&hv, sizeof(hv), 1, fptr) ; // ghi noi dung 1 mau tin trong bien hv
// vao file fptr
}
}
while (strlen(hv.hoten)!=0);
fclose (fptr);
}
Ví dụ 2: Ghi dữ liệ u mả ng và o file nhị phâ n
#include
#include
#include
void main()
{ struct hocvien
{ char hoten[30];
int tuoi;
} hv;
struct hocvien table[3];
FILE *fptr;
char tenfile[67];
char tuoi[3];
int i=0;
printf("Nhap ten file :");
gets(tenfile);
if ((fptr=fopen(tenfile,"wb")) == NULL)
{ printf ("Khong the tao file\n"); exit(0);
}
do
{ printf("Nhap ho ten hoc vien :");
gets(hv.hoten);
printf("Nhap tuoi :");
gets(tuoi);
hv.tuoi = atoi(tuoi); // macro doi chuoi qua so nguyen
table[i++]=hv;
Kỹ thuật lập trì nh 65
}
while (i<3);
fwrite(table, sizeof(table), 1, fptr) ; // ghi noi dung toan bo hoc vien trong
// table vao file fptr
// hoặ c for (i=0; i<3; i++)
// fwrite(&table, sizeof(table), 1, fptr)
fclose (fptr);
}
Ví dụ 3: Chương trì nh đọc file nhị phâ n, và in danh sá ch học viê n ra mà n
hì nh.
// In danh sá ch học viê n ra mà n hì nh
#include
#include
#include
void main()
{ struct hocvien
{ char hoten[30];
int tuoi;
} hv;
FILE *fptr;
char tenfile[67];
char tuoi[3];
printf("Nhap ten file :");
gets(tenfile);
if ((fptr=fopen(tenfile,"rb")) == NULL) // Mở file để đọc
{ printf ("Khong the mo file\n"); exit(0);
}
clrscr();
printf(" Ho va ten Tuoi");
while (fread(&hv,sizeof(hv),1,fptr) ==1)
{
printf("\n%-20s",hv.hoten);
printf("%3d",hv.tuoi);
}
fclose (fptr);
}
V.2.5. Truy xuất tập tin ngẫu nhiê n: (điề u khiể n con trỏ tậ p tin trê n file
nhị phâ n)
Kỹ thuật lập trì nh 66
* Con trỏ file: Mỗi tậ p tin đề u có con trỏ file sau khi được mở. Con trỏ file
là con trỏ chỉ đế n từng byte trê n file. Khi đọc hay ghi dữ liệ u trê n tậ p tin, ta đ∙
là m dịch chuyể n con trỏ file một số byte, đâ y chí nh là số byte mà kiể u dữ liệ u đ∙
chiế m. Khi đóng rồi mở tậ p tin, con trỏ file luôn ở đầ u tậ p tin ; ngoạ i trừ trường
hợp ta mở bằ ng tùy chọn 'a' thì con trỏ file sẽ ở cuối tậ p tin để ghi thê m dữ liệ u
và o cuối tậ p tin. Hà m fseek cho phép ta di chuyể n con trỏ file đế n vị trí mong
muốn.
Cú pháp:
int fseek (FILE * fptr, long nbytes, kiể u)
+ nbytes : số bytes tí nh từ vị trí kiể u cho đế n vị trí cầ n tới
+ kiể u là số nguyê n :
kiể u = 0 (tí nh từ đầ u tậ p tin)
kiể u = 1 (tí nh từ vị trí hiệ n tạ i)
kiể u = 2 (tí nh từ cuối tậ p tin)
Nế u fseek trả về 0 nghĩ a là nó đ∙ di chuyể n tới vị trí đó.
Lưu ý: số thứ tự trê n tậ p tin tí nh từ 0.
Ví dụ: Viế t chương trì nh truy xuấ t ngẫ u nhiê n một mẫ u tin theo số thứ tự
của nó trong file nhị phâ n
#include
#include
#include
void main()
{ struct hocvien
{ char hoten[30];
int tuoi;
} hv;
FILE *fptr;
char tenfile[67];
int stt, sobytes;
printf("Nhap ten file :");
gets(tenfile);
if ((fptr=fopen(tenfile,"rb")) == NULL)
{ printf ("Khong the mo file\n"); exit(0);
}
clrscr();
Kỹ thuật lập trì nh 67
printf("Cho biet so thu tu mau tin can di chuyen den :");
scanf("%d",&stt);
sobytes = stt * sizeof(hv);
if (fseek(fptr,sobytes,0)!=0)
{ printf ("Khong the di chuyen con tro file toi vi tri ban chi dinh duoc");
exit(0);
}
fread(&hv,sizeof(hv),1,fptr) ;
printf("\n%-20s",hv.hoten);
printf("%3d",hv.tuoi);
fclose (fptr);
getch();
}
V.3. Phát hiệ n lỗi khi truy xuất tập tin
Phầ n lớn những hà m xuấ t, nhậ p tậ p tin chuẩ n không thông bá o rõ nội dung
của lỗi. Chẳ ng hạ n như :
- putc () sẽ trả về EOF khi có lỗi hoặ c cuối tậ p tin
- fgets () sẽ trả về là NULL khi đọc hế t file hoặ c khi có lỗi
Do đó, để phá t hiệ n lỗi khi truy xuấ t tậ p tin, ta dùng macro ferror (FILE *fptr)
int ferror (file * ptr)
Macro ferror trả về một trị khá c 0 nế u phá t hiệ n ra lỗi trê n file fptr.
* Để xuấ t câ u thông bá o lỗi ta dùng hà m perror ()
void perror (const char * str)
với str : chuỗi ký tự chứa câ u thông bá o
* Hai hà m nà y thường được sử dụng ngay sau khi sử dụng cá c hà m đọc /
ghi file
Ví dụ: fwrite (&table, sizeof (table), 1, fptr);
if (ferror (fptr) != 0)
{ perror (“Loi ghi du lieu”);
exit (0);
}
Ví dụ :
#include
void main()
{
FILE *fp;
Kỹ thuật lập trì nh 68
fp = fopen("perror.dat", "r");
if (!fp)
perror("Không thể mở file để đọc");
}
Khi chạ y chương trì nh nà y, nế u trê n dĩ a chưa có tậ p tin perror.dat thì sẽ hiệ n
thông bá o lỗi: Không thể mở file để đọc: No such file or directory.
Bài tập
1. Tạ o tậ p tin diệ n tí ch.h
#define Pi 3.14
#define dthv (x) x*x
#define dtht (x) (Pi*x*x)
2. Viế t chương trì nh tí nh diệ n tí ch dựa và o file dientich.h ở trê n
3. Viế t hà m đệ qui tí nh tí ch P(n) = 1 * 2 * 3* ....* n , n>0
4. Viế t hà m đệ qui tí nh hà m mũ xn, với n nguyê n.
5. Viế t hà m đệ qui tí nh phầ n tử thứ n của hà m Fibonacci.
6. Viế t hà m đệ qui giả i quyế t bà i toá n Thá p Hà nội.
Có 3 cột A, B, C. Cột A hiệ n đang có n dĩ a kí ch thước khá c nhau, dĩ a nhỏ ở
trê n dĩ a lớn ở dưới. H∙ y dời n dĩ a từ cột A sang cột C (xem cột B l...
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status