Tải bản đầy đủ (.pdf) (827 trang)

Hệ thống máy tính và ngôn ngữ C

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.96 MB, 827 trang )

HỆ THỐNG MÁY TÍNH VÀ NGÔN
NGỮ C
GIÁO TRÌNH
***********************
1. HỆ THỐNG MÁY TÍNH VÀ NGƠN NGỮ C, TS. ĐẶNG
THÀNH TÍN, ĐH QG TPHCM
2. INTRODUCTION TO COMPUTING SYSTEMS, YALE N.
PATT AND SANJAY J. PATEL, INTERNATIONAL
EDITION


HỆ THỐNG MÁY TÍNH VÀ NGÔN
NGỮ C

1.
2.
3.
4.

ĐÁNH GIÁ MƠN HỌC
**************************
20% GIỮA KỲ: THI VIẾT CHƯƠNG TRÌNH (45 PHÚT)
35% CUỐI KỲ: THI TRẮC NGHIỆM (40 CÂU/60-80 PHÚT)
20% THỰC HÀNH
25% BÀI TẬP LỚN: NỘP QUA E-LEARNING


HỆ THỐNG MÁY TÍNH VÀ NGÔN
NGỮ C

1.



2.
3.
4.

E-LEARNING
************************
TRUY CẬP WEBSITE PHỊNG ĐÀO TẠO:
WWW.AAO.HCMUT.EDU.VN
VÀO E-LEARNING
VÀO TÀI KHOẢN CỦA SINH VIÊN
THAM GIA LỚP HỌC


HỆ THỐNG MÁY TÍNH VÀ NGÔN
NGỮ C
CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY TÍNH


CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.
2.
3.
4.
5.
6.


CÁC HỆ ĐẾM
CÁC KHÁI NIỆM CƠ BẢN
LỊCH SỬ PHÁT TRIỂN CỦA MÁY TÍNH
CÁC THÀNH PHẦN CƠ BẢN CỦA MÁY TÍNH
PHẦN MỀM
CÁC CẤP CHUYỂN ĐỔI


CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.1 CÁC HỆ ĐẾM
1.1.1 Hệ thập phân
Ví dụ 1.1: Các hằng số trong hệ 10:
102, 3098.34D, 198d


CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.1 CÁC HỆ ĐẾM
1.1.1 Hệ thập phân
Ví dụ 1.2: Các số sau đây được viết ở dạng phân tích
trong hệ thập phân
1986D = 1.103 + 9.102 + 8.10 1 + 6.100
234d = 2.102 + 3.10 1 + 4.100
0.163 = 1.10-1 + 6.10-2 + 3.10-3



CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.1 CÁC HỆ ĐẾM
1.1.2 Hệ nhò phân
•Hệ đếm chính thức dùng cho máy tính.
•Sử dụng hai mức điện áp thấp và cao để quy đònh cho 2
trạng thái số làm việc là 0 và 1.
•Trạng thái số nhò phân được gọi là bit, viết tắt từ
binary digit.
•Việc ghép các ký số 0 và 1 lại để mã hóa mọi dữ liệu để
máy tính xử lý là điều cần thiết.


CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.1 CÁC HỆ ĐẾM
1.1.2 Hệ nhò phân
Ví dụ 1.3:
Các hằng số trong hệ 2:
1011B, 101010b, 1010101.101B
Ví dụ 1.4:
10101B = 1.24 + 0.23 + 1.22 + 0.21 + 1.20 = 21D
11.01B = 1.21 + 1.20 + 0.2-1 + 1.2-2 = 3.25D



CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.1 CÁC HỆ ĐẾM
1.1.2 Hệ nhò phân
Trạng thái

Thập phân

0 0



0

0

1 1



1

2n-1

n bit



CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.1 CÁC HỆ ĐẾM
1.1.3 Hệ bát phân
Ví dụ1.5: Các hằng trong hệ bát phân:
734O, 123.56o, -34.23O
Ví dụ1.6:
705 O = 7.82 + 0.81 + 5.80 = 453 D
123.56 O = 1.82 + 2.81 + 380 + 5.8-1 + 6.8-2


CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.1 CÁC HỆ ĐẾM
1.1.3 Hệ bát phân

Ký số
Tương ứng
bát phân nhị phân

0
1
2
3
4
5

6
7

000
001
010
011
100
101
110
111

Tương ứng
thập phân

0
1
2
3
4
5
6
7


CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.1 CÁC HỆ ĐẾM

1.1.3 Hệ bát phân
Ví dụ1.5: Các hằng trong hệ bát phân:
734O, 123.56o, -34.23O
Ví dụ1.6:
705 O = 7.82 + 0.81 + 5.80 = 453 D
123.56 O = 1.82 + 2.81 + 380 + 5.8-1 + 6.8-2


CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.1 CÁC HỆ ĐẾM
1.1.3 Hệ bát phân
Ví dụ1.7: Chuyển số từ hệ 8 qua hệ 2 và ngược lại
1 101 011 011 B = 1533 O
1 5
3
3
245 O = 010 100 101 B = 10100101 B
2
4
5


CHƯƠNG 1
ÔN LẠI CÁC KIẾN THỨC CƠ BẢN VỀ MÁY
TÍNH

1.1 CÁC HỆ ĐẾM

1.1.4 Hệ thập lục phân
•Có 16 ký số khác nhau trong hệ thống số đếm này: 0, 1,
… , 9, A, B, C, D, E, F.
•Thường được viết thêm ký tự H hay h phíxong, vùng nhớ của
nó không được giải phóng thì nó vẫn chiếm chổ trong bộ
nhớ, mặc dù chương trình đã kết thúc. C đưa ra hàm free()
để giải phóng khối bộ nhớ được xin bằng hàm malloc()
hoặc calloc().
Prototype của hàm free() trong file stdlib.h hoặc alloc.h
như sau:
void free (void * block);


CHƯƠNG 12
POINTER
12.7 POINTER VÀ VIỆC ĐỊNH VỊ BỘ NHỚ ĐỘNG

Cấu trúc bộ nhớ LC-3
với ứng bộ nhớ heap


CHƯƠNG 12
POINTER
12.7 POINTER VÀ VIỆC ĐỊNH VỊ BỘ NHỚ ĐỘNG
Ví dụ:
Cần xin một khối bộ nhớ có 10 phần tử int, ta viết như
sau:

hoặc


int *pint;
pint = (int *) malloc (10 * siezof (int));
pint = (int *) calloc (10, siezof (int));


CHệễNG 12
POINTER
12.7 POINTER VAỉ VIEC ẹềNH Về BO NHễ ẹONG
Vớ duù:
#include <stdio.h>
#include <conio.h>
#include
EXIT
#include <alloc.h>
main()
{
int *pint, s = 0, i;
pint = (int *) calloc (10, sizeof (int));
if (pint == NULL)
{ printf ("Khong du bo nho \n");
exit (1);
}


CHệễNG 12
POINTER
12.7 POINTER VAỉ VIEC ẹềNH Về BO NHễ ẹONG
Vớ duù:
clrscr();
printf ("Moi nhap 10 tri vao mang: ");

for (i = 0; i <10; i++)
scanf ("%d", &pint[i]);
for (i = 0; i <10; i++)
s += pint[i];
printf ("Tong cac phan tu cua mang la: %d \n", s);
getch();
free (pint);
}


CHƯƠNG 12
POINTER
12.8 MẢNG CÁC POINTER
Cú pháp khai báo mảng các pointer:
kiểu * tên_mảng [Kích_thước];
Ví dụ: Khi khai báo
int * pint[4];


CHÖÔNG 12
POINTER
12.8 MAÛNG CAÙC POINTER
Ví duï: Khi khai baùo
int * pint[4];
int a = 2, b = 3, c = 4, d = 5;
pint[0] = &a;
pint[1] = &b;
pint[2] = &c;
pint[3] = &d;



CHÖÔNG 12
POINTER
12.8 MAÛNG CAÙC POINTER


CHÖÔNG 12
POINTER
12.8 MAÛNG CAÙC POINTER
Ví duï: Khi khai baùo
int * pint[4];
int a[3], b[3], c[3], d[3];
pint[0] = a;
pint[1] = b;
pint[2] = c;
pint[3] = d;


CHÖÔNG 12
POINTER
12.8 MAÛNG CAÙC POINTER


CHƯƠNG 12
POINTER
12.8 MẢNG CÁC POINTER
Ví dụ 13.48, 13.49 (SGT)
Ví dụ : Khi khai báo
int a[4][5];
int *b[4];

thì khi truy xuất a[2][3] và b[2][3], C đều hiểu đây là các
biến int


×