Giáo trình Tin học đại cương - Đại học Giao thông vận tải Hà Nội
MỤC LỤC
LỜI NÓI ðẦU. 3
PHẦN 1. 4
ðẠI CƯƠNG VỀTIN HỌC. 4
CHƯƠNG 1 – NHỮNG KHÁI NIỆM CƠBẢN VỀTIN HỌC. 5
1.1 ðối tượng nghiên cứu của Tin học. 5
1.2 Thông tin và xửlý thông tin . 5
1.3 Hệ ñếm và biểu diễn thông tin trong máy tính. 6
1.4 Nguyên lý của hệxửlý thông tin tự ñộng . 8
1.5 Cấu trúc máy tính . 10
1.6 Một số ứng dụng của Tin học . 12
CHƯƠNG 2 – HỆ ðIỀU HÀNH. 14
2.1 Hệ ñiều hành MS-DOS. 14
2.2 Hệ ñiều hành Windows. 16
CHƯƠNG 3 – THUẬT TOÁN . 21
3.1 Khái niệm. 21
3.2 Một sốphương pháp biểu diễn thuật toán . 21
3.3 Các cấu trúc cơbản của thuật toán. 23
3.4 Một sốthuật toán giải một sốbài toán ñơn giản . 27
PHẦN 2. 32
NGÔN NGỮLẬP TRÌNH C . 32
CHƯƠNG 1 - MỘT SỐKHÁI NIỆM MỞ ðẦU . 34
1.1 Tập ký tự . 34
1.2 Từkhóa. 34
1.3 Tên. 35
1.4 Một sốkhái niệm. 35
1.5 Một sốchương trình ñơn giản. 38
1.6 Một sốquy tắc cần nhớkhi viết chương trình . 39
1.7 Cách thực hiện các chương trình trên máy tính . 40
BÀI TẬP CHƯƠNG 1 . 41
CHƯƠNG 2 - CÁC KIỂU DỮLIỆU . 42
2.1 Các kiểu dữliệu cơbản . 42
2.2 Hằng . 43
2.3 Biến. 45
2.4 Mảng. 46
2.5 Các phép toán trên các kiểu . 48
2.6 Nhập xuất dữliệu . 52
2.7 Một sốhàm thường dùng. 56
BÀI TẬP CHƯƠNG 2 . 57
CHƯƠNG 3 - CÁC LỆNH ðIỀU KHIỂN . 58
3.1 Nhắc lại khái niệm vềcâu lệnh và khối lệnh . 58
3.2. Lệnh if. 58
3.3 Lệnh for . 61
3.4 Lệnh while . 63
3.5 Lệnh do - while . 65
3.6 Lệnh break . 66
3.7 Lệnh continue. 66
BÀI TẬP CHƯƠNG 3 . 68
CHƯƠNG 4 - HÀM VÀ TỔCHỨC CHƯƠNG TRÌNH. 70
4.1 Tổchức chương trình thành các hàm . 70
4.2 Tham sốkiểu con trỏ . 73
4.3 ðệquy. 79
BÀI TẬP CHƯƠNG 4 . 83
CHƯƠNG 5 - CẤU TRÚC . 84
5.1 ðịnh nghĩa cấu trúc và khai báo biến cấu trúc. 84
5.2 Kết hợp ñịnh nghĩa cấu trúc và khai báo biến cấu trúc . 84
5.3 Sửdụng typedef ñể ñịnh nghĩa kiểu dữliệu cấu trúc . 85
5.4 Truy cập các thành phần của cấu trúc . 86
5.5 Ví dụminh hoạ . 86
BÀI TẬP CHƯƠNG 5 . 89
PHỤLỤC 1 - BẢNG MÃ ASCII . 91
PHỤLỤC 2 . 93
DANH SÁCH CÁC HÀM CỦA TURBO C THEO THỨTỰABC . 93
i = 0;
for (i = 0; i < n - 1; i++)
{
dx = (pDiem[i + 1].x - pDiem[i].x);
dy = (pDiem[i + 1].y - pDiem[i].y);
do_dai+= sqrt(dx*dx + dy*dy);
}
return do_dai;
}
5.5.2 Ví dụ 2
Giáo trình Tin học ðại cương
88
Nhập một danh sách gồm n thí sinh dự thi ñại học, mỗi thí sinh là một cấu trúc gồm các
trường: Họ và tên, Quê, ðiểm toán, ðiểm lý, ðiểm hoá
Yêu cầu:
- Nhập ñiểm chuẩn sau ñó tìm và in ra màn hình danh sách các thí sinh ñỗ ñại học
có quê ở “Ha Noi” (Thí sinh ñỗ ñại học nếu có tổng ñiểm không dưới ñiểm
chuẩn).
- Tìm và in ra màn hình danh sách các thí sinh có ñiểm toán cao nhất.
- In ra màn hình toàn bộ thông tin của n thí sinh..
ðể giải quyết bài toán này ta có chương trình sau:
#include
#include
// Dinh nghia kieu Ho so sinh vien
typedef struct {
char HoTen[30];
char Que[50];
float DiemToan;
float DiemLy;
float DiemHoa;
} HSSV, *PHSSV;
void NhapHSSV(PHSSV pSv, int n)
{
HSSV sv;
int i;
for (i = 0; i < n; i++)
{
printf("Ten sinh vien %d: ", i + 1);
fflush(stdin);
gets(sv.HoTen);
printf("Que sinh vien %d: ", i + 1);
fflush(stdin);
gets(sv.Que);
printf("Diem toan, ly, hoa sinh vien %d: ", i + 1);
scanf("%f%f%f", &sv.DiemToan, &sv.DiemLy, &sv.DiemHoa);
pSv[i] = sv;
}
}
void InHSSV(PHSSV pSv, int n)
{
int i;
printf("%4s %20s %20s %6s %6s %6s\n",
"STT", "Ho ten", "Que quan", "Toan", "Ly", "Hoa");
for (i = 0; i < n; i++)
printf("%4d %20s %20s %6.1f %6.1f %6.1f\n", i + 1, pSv[i].HoTen,
pSv[i].Que, pSv[i].DiemToan, pSv[i].DiemLy, pSv[i].DiemHoa);
}
void main()
{
HSSV day[50];
int n, i;
float chuan, max;
printf("Nhap so sinh vien: ");
scanf("%d", &n);
// Nhap ds sinh vien
Giáo trình Tin học ðại cương
89
NhapHSSV(day, n);
// In ds sinh vien vua nhap
InHSSV(day, n);
// Tim kiem cac sinh vien do que o Ha Noi
printf("Nhap diem chuan: ");
scanf("%f", &chuan);
printf("\nDanh sach sinh vien do, que o Ha Noi:\n");
printf("%4s %20s %20s %6s %6s %6s\n",
"STT", "Ho ten", "Que quan", "Toan", "Ly", "Hoa");
for (i = 0; i < n; i++)
if ((day[i].DiemToan + day[i].DiemLy + day[i].DiemHoa >= chuan)&&
(strcmpi(day[i].Que, "Ha Noi") == 0))
printf("%4d %20s %20s %6.1f %6.1f %6.1f\n", i + 1, day[i].HoTen,
day[i].Que, day[i].DiemToan, day[i].DiemLy, day[i].DiemHoa);
// Tim diem toan cao nhat
max = day[0].DiemToan;
for (i = 1; i < n; i++)
if (max < day[i].DiemToan)
max = day[i].DiemToan;
// In ra danh sach sinh vien diem toan cao nhat
printf("\nDanh sach sinh vien diem toan cao nhat:\n");
printf("%4s %20s %20s %6s %6s %6s\n",
"STT", "Ho ten", "Que quan", "Toan", "Ly", "Hoa");
for (i = 0; i < n; i++)
if (day[i].DiemToan == max)
printf("%4d %20s %20s %6.1f %6.1f %6.1f\n", i + 1, day[i].HoTen,
day[i].Que, day[i].DiemToan, day[i].DiemLy, day[i].DiemHoa);
}
Trong chương trình trên, ta xây dựng 2 hàm nhập (NhapHSSV) và in (InHSSV) danh sách
sinh viên. Sau ñó sử dụng chúng trong hàm main. ðộc giả có thể viết lại chương trình trên mà
không sử dụng 2 hàm trên bằng cách viết trực tiếp ñoạn chương trình nhập và in vào trong
hàm main.
BÀI TẬP CHƯƠNG 5
Bài 1. Xây dựng một cấu trúc (ứng với phiếu ñiểm của thí sinh) gồm các thành phần:
- Họ tên
- Quê quán
- Trường
- Tuổi
- Số báo danh
- ðiểm thi
trong ñó Họ tên lại là một cấu trúc gồm ba thành phần: Họ, tên ñệm và tên. Quê quán cũng là
một cấu trúc gồm ba thành phần: xã, huyện và tỉnh. ðiểm thi là một cấu trúc gồm ba thành
phần: toán, lý, hóa (ñiểm chấm chính xác ñến 1/4).
Giáo trình Tin học ðại cương
90
ðọc số liệu từ một phiếu ñiểm cụ thể và lưu trữ vào các thành phần của cấu trúc nói trên, sau
ñó in các số liệu ra màn hình.
Bài 2. Sử dụng ñịnh nghĩa cấu trúc ở bài 1 :
Nhập số liệu của 20 phiếu ñiểm và lưu trữ vào mảng cấu trúc nói trên.
Tìm kiếm và in ra các thí sinh có tổng số ñiểm ba môn lớn hơn 15.
Bài 3. Giả sử ñã nhập số liệu của 20 phiếu ñiểm theo như yêu cầu của bài 2. Hãy lập chương
trình sắp xếp lại các phần tử của mảng cấu trúc theo thứ tự giảm dần của tổng số ñiểm, sau ñó
in danh sách thí sinh (theo thứ tự nói trên). Mỗi thí sinh sẽ in trên một dòng gồm các thông
tin:
- Họ tên
- Quê quán
- Số báo danh
- ðiểm toán, lý, hóa.
Bài 4. Nhập danh sách n học sinh với các thuộc tính: họ tên, năm sinh và tổng ñiểm. Sắp xếp
danh sách theo thứ tự giảm của tổng ñiểm. Khi tổng ñiểm như nhau thì học sinh có năm sinh
nhỏ hơn ñược xếp trước. In danh sách học sinh ñã sắp xếp sao cho tất cả các chữ cái của họ
tên chuyển thành chữ hoa.
Bài 5. ðịnh nghĩa kiểu cấu trúc mô tả ña thức, sau ñó viết các hàm vào ña thức, in ña thức,
cộng ña thức và nhân ña thức. áp dụng trong hàm main() ñể thực hiện các việc:
Vào từ bàn phím ba ña thức P1, P2 và P3. Tính ña thức P theo công thức:
P = (P1 + P2)2 + P3
In P1, P2, P3 và P.
Vào từ bàn phím một dẫy n ña thức, sau ñó in chúng lên màn hình theo thứ tự giảm của bậc.
Giáo trình Tin học ðại cương
91
PHỤ LỤC 1 - BẢNG MÃ ASCII
Bộ ký tự ASCII (American Standard Code for Interchange Information) gồm 256 ký
ñược phân bố như sau:
- 32 ký tự ñầu tiên là các ký tự ñiều khiển không in ñược như ký tự Enter (mã 13),
ký tự ESC (mã 27).
- Các mã ASCII 32-47,58-64,91-96 và 123-127 là các ký tự ñặc biệt như dấu chấm,
dấu phẩy, dấu cách, dấu ngoặc, dấu móc, dấu hỏi,...
- Các mã ASCII 48-57 là 10 chữ số
- Các mã ASCII 65-90 là các chữ cái hoa từ A ñến Z
- Các mã ASCII 97-122 là các chữ cái thường từ a ñến z
- Các mã ASCII 128-255 là các ký tự ñồ hoạ.
MÃ KÝ TỰ MÃ KÝ TỰ MÃ KÝ TỰ
0 NUL 43 + 86 V
1 SOH 44 , 87 W
2 STX 45 - 88 X
3 ETX 46 . 89 Y
4 EOT 47 / 90 Z
5 ENQ 48 0 91 [
6 ACK 49 1 92 \
7 BEL 50 2 93 ]
8 BS 51 3 94 ^
9 HT 52 4 95 _
10 LF 53 5 96 `
11 VT 54 6 97 a
12 FF 55 7 98 b
13 CR 56 8 99 c
14 SO 57 9 100 d
15 SI 58 : 101 e
16 DLE 59 ; 102 f
17 DC1 60 < 103 g
18 DC2 61 = 104 h
19 DC3 62 > 105 i
20 DC4 63 ? 106 j
21 NAK 64 @ 107 k
22 SYN 65 A 108 l
23 ETB 66 B 109 m
Giáo trình Tin học ðại cương
92
24 CAN 67 C 110 n
25 EM 68 D 111 o
26 SUB 69 E 112 p
27 ESC 70 F 113 q
28 FS 71 G 114 r
29 GS 72 H 115 s
30 RS 73 I 116 t
31 US 74 J 117 u
32 Space 75 K 118 v
33 ! 76 L 119 w
34 ” 77 M 120 x
35 # 78 N 121 y
36 $ 79 O 122 z
37 % 80 P 123 {
38 & 81 Q 124 |
39 ’ 82 R 125 }
40 ( 83 S 126 ~
41 ) 84 T 127 DEL
42 * 85 U
Giáo trình Tin học ðại cương
93
PHỤ LỤC 2
DANH SÁCH MỘT SỐ HÀM CỦA TURBO C
(theo thứ tự ABC)
ðể biết chi tiết, ñề nghị ñộc giả sử dụng help của môi trường TC bằng cách ñánh tên hàm
trong môi trường TC sau ñó ñể con trỏ dưới tên hàm rối nhấn Ctrl + F1.
Hàm Tệp tiêu ñề Hàm Tệp tiêu ñề
1. _chmod 28. coreleft
2. _close 29. cos
3. _creat 30. cosh
4. _open 31. cprintf
5. abort 32. creat
6. abs 33. cscanf
7. acos 34. delay
8. arc 35. delline
9. asin 36. disable
10. atan 37. drawpoly
11. atan2 38. ecvt
12. atof 39. ellipse
13. atoi 40. enable
14. atol 41. exit
15. bar 42. exp
16. bar3d 43. fabs
17. cabs 44. fclose
18. calloc 45. fcloseall
19. ceil 46. fcvt
20. chdir 47. feof
21. chmod 48. ferror
22. circle 49. fflush
23. cleardevive 50. fflushall
24. clearviewport 51. fgetc
25. close 52. fgets
26. clreol 53. fillpopy
Giáo trình Tin học ðại cương
94
27. clrscr 54. findfirst
55. findnext 87. getpalette
56. floodfill 88. getpixel
57. floor 89. gets
58. fmode 90. gettextinfo
59. fopen 91. gettime
60. FP_OFF 92. gettime
61. FP_SEG 93. getvect
62. fprintf 94. getviewport
63. fprintf 95. getw
64. fputc 96. gotoxy
65. fputs 97. gotoxy
66. fread 98. grapherrormsg
67. free 99. graphresult
68. fscanf 100. imagesize
69. fseek 101. initgraph
70. fteel 102. int86
71. fwrite 103. int86x
72. gcvt 104. intdos
73. geninterrupt 105. intdosx
74. getbkcolor 106. intr
75. getc 107. inxdigit
76. getch 108. isalnum
77. getchar 109. isalpha
78. getche 110. iscntrl
79. getcolor 111. isdigit
80. getcwd 112. isgraph
81. getdate 113. islower
82. getimage 114. isprint
83. getlinesettings 115. ispunct
84. getmaxcolor 116. isspace
85. getmaxx 117. isupper
86. getmaxy 118. itoa
119. kbhit 145. peek
120. Keep 146. peekb
Giáo trình Tin học ðại cương
95
121. labs 147. perror
122. line 148. pieslice
123. linerel 149. poke
124. lineto 150. pokeb
125. log 151. pow
126. log10 152. printf
127. lseek 153. putc
128. Ltoa 154. putch
129. malloc 155. putchar
130. memccpy hoặc
156. putimage
131. memchr hoặc
157. putpixel
132. memcmp hoặc
158. puts
133. memcpy hoặc
159. putw
134. memicmp hoặc
160. rand
135. memset hoặc
161. random
136. MK_FP 162. randomize và
137. mkdir 163. read
138. movedata 164. realloc
139. movedata hoặc
165. rectangle
140. moveto
166. remove
141. nosound 167. rewind
142. open 168. rmdir
143. outtext 169. scanf
144. outtextxy 170. segread
171. setbkcolor 200. Strncat
172. setcolor 201. strncmp
173. setdate 202. strncpy
174. setfillstyle
203. strnicmp
Giáo trình Tin học ðại cương
96
175. setlinestyle
204. strnset
176. setpalette
205. strpbrk
177. settextjustify
206. strrchr
178. settextstyle
207. strrev
179. settime
208. strset
180. setvect
209. strspn
181. setviewport
210. Strstr
182. setwritemode 211. strupr
183. sin
212. system
184. Sinh
213. tan
185. sleep
214. Tanh
186. sound
215. textbackground
187. sprintf
216. textcolor
188. sqrt
217. textheight
189. srand
218. textmode
190. strcat
219. textwidth
191. strchr
220. time
192. strcmp
221. tolower
193. strcmpi
222. toupper
194. strcpy
223. ultoa
195. strcspn
224. unlink
196. strdup
225. Wherex
197. stricmp
226. wherey
198. strlen 227. window
199. strlwr
228. write
File đính kèm:
Giáo trình Tin học đại cương - Đại học Giao thông vận tải Hà Nội.pdf

