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

Chuong 2 giới thiệu ngôn ngữ lập trình c

69 35 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 69
Dung lượng 1,59 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

chương này giới thiệu về ngôn ngữ lập trình c , môi trường lập trình của c ,các phần tử cơ bản của ngôn ngữ lập trình c , và cấu trúc của chương trình C được phát triển dựa trên nền ngôn ngữ B và BCPL. Tên ngôn ngữ C được xem là sự tiếp nối của ngôn ngữ B

Trang 1

CHƯƠNG 2: GIỚI THIỆU NGÔN NGỮ

LẬP TRÌNH C

BÀI GIẢNG HỌC PHẦN

KỸ THUẬT LẬP TRÌNH

Trang 3

2.1 Lịch sử phát triển ngôn ngữ lập trình C

• Lịch sử phát triển ngôn ngữ lập trình C

• Đặc điểm của ngôn ngữ lập trình C

Trang 5

Lịch sử phát triển ngôn ngữ lập trình C (2)

• C được phát triển dựa trên nền ngôn ngữ B và BCPL Tên ngôn ngữ C được xem là sự tiếp nối của ngôn ngữ B

• Năm 1973, Ritchie & Thompson đã viết lại hệ điều hành UNIX bằng ngôn ngữ C - phiên bản phổ biến

và là cơ sở quan trọng nhất để phát triển các hệ điều hành phổ biến hiện nay, điển hình là Linux và Mac

OS của Apple

• Năm 1978, Ritchie và Brian Kernighan xuất bản cuốn “The C programming language”

Trang 6

Lịch sử phát triển ngôn ngữ lập trình C (3)

• Sau 1978, C được bổ sung thêm những tính năng mới trong nhiều phiên bản khác nhau nhưng không tương thích với nhau

• Năm 1989, Viện tiêu chuẩn quốc gia Hoa Kỳ (ANSI

- American National Standards Institue) đã công bố phiên bản chuẩn hóa của ngôn ngữ C:

“Programming Language C” ANSI X3.159-1989, phiên bản này thường được nhắc đến với tên gọi ANSI C, còn gọi là C “chuẩn” hay C89 ANSI C được hỗ trợ bởi hầu hết các chương trình dịch

Trang 7

Lịch sử phát triển ngôn ngữ lập trình C (4)

• Năm 1990, tiêu chuẩn ANSI C đã được tiêu chuẩn hóa bởi Tổ chức Quốc tế về Tiêu chuẩn hóa (ISO): phiên bản ISO/IEC 9899:1990, còn gọi

là ISO C hay C99 Phiên bản này được hỗ trợ bởi GCC và nhiều chương trình dịch khác, tuy nhiên không được hỗ trợ bởi các chương trình dịch của Microsoft và Borland

• C hiện là một trong những ngôn ngữ lập trình thông dụng và là nguồn gốc xây dựng các ngôn ngữ lập trình “mạnh” và phổ biến khác như C++, Java

Trang 8

Đặc điểm của ngôn ngữ lập trình C

• Có tính khả chuyển, linh hoạt cao

• Có thế mạnh trong việc xử lý dữ liệu số, văn bản, cơ

sở dữ liệu, …

• Được xem như ngôn ngữ lập trình hệ thống, sử dụng

để xây dựng các chương trình hệ thống, trình điều

Trang 9

2.2 Môi trường lập trình (1)

• Xây dựng chương trình:

Trang 10

- Sửa lỗi (gỡ rối - debug)

• Các môi trường điển hình:

- Turbo C++ và Borland C++ của Borland, Inc

- MSC và VC của Microsoft Corp

- GCC của GNU project

Trang 12

2.3 Các phần tử cơ bản của ngôn ngữ lập trình C

Trang 15

• Các từ khóa trong C được viết bằng chữ thường

• Một số từ khóa thông dụng:

- typedef, const, signed, unsigned, struct, enum, void, sizeof, static

- char, int, short, long, float, double

- default, if, else, case, switch, for, while, do

- break, continue, goto, return, interrupt

Trang 16

• Tên (định danh): là dãy các ký tự dùng để xác định các đối tượng trong chương trình như: biến, hằng, hàm, kiểu dữ liệu, …

• Quy tắc đặt tên:

- Không được trùng với các từ khóa

- Tên được đặt có tính gợi nhớ

- Gồm các ký tự chữ, số và dấu gạch nối, ký tự đầu tiên phải là ký tự chữ hoặc dấu gạch nối

Ví dụ đặt tên đúng: a, b, x, y, PI, …

Ví dụ đặt tên sai: int, char, tinh giai thua

Trang 17

const int MAX=100;

const float PI=3.14;

Trang 20

Biến (2)

• Lưu ý:

- Cần khai báo tất cả các biến trước khi sử dụng

- Có thể kết hợp khai báo biến với việc khởi tạo giá trị cho biến theo cú pháp:

Trang 22

Biểu thức (1)

• Được tạo thành từ sự kết hợp các toán tử (operater)

và các toán hạng (operand) để thể hiện một công thức tính toán

- Toán tử: tác động lên các toán hạng và trả về giá trị thuộc một kiểu nhất định Các toán tử : +, -,

Trang 24

Biểu thức (3)

• Sử dụng biểu thức:

- Dùng làm vế phải trong các lệnh gán giá trị

- Dùng làm toán hạng trong các biểu thức khác

- Dùng làm tham số thực sự trong các lời gọi hàm

- Dùng làm chỉ số trong các cấu trúc lặp for, while,

do while

- Dùng làm biểu thức kiểm tra trong các cấu trúc

rẽ nhánh if, switch

- …

Trang 26

Các toán tử số học (1)

• Các toán tử 1 ngôi:

Lưu ý: Với các toán tử ++/ , nếu đặt toán tử trước toán hạng thì thực hiện tăng/giảm giá trị trước, đặt toán tử sau toán hạng thì thực hiện tăng/giảm giá trị sau

Ví dụ:

x=9; y=x++; z=x ;  Kết quả: x=9, y=9, z=10

Toán tử Ý nghĩa Kiểu toán hạng Ví dụ

Trang 27

x Các toán tử số học (2)

• Các toán tử 2 ngôi:

Toán tử Ý nghĩa Kiểu toán hạng Ví dụ

Trang 28

Các phép thao tác trên bit (1)

trừ theo bit 2 số nhị phân 0^0, 0^1, 1^0, 1^1, 100^101

<< Dịch trái số nhị phân a<<2, 101<<2

>> Dịch phải số nhị phân a>>2, 101>>2

Trang 29

Các phép thao tác trên bit (2)

• Lưu ý: Đối với các phép dịch chuyển số học, nếu thực hiện trên giá trị thuộc kiểu số nguyên có dấu thì bảo toàn bit dấu (bit cực trái), nếu thực hiện trên các giá trị thuộc kiểu số nguyên không dấu (unsigned) thì bit dấu không có ý nghĩa và cũng bị dịch chuyển như các bit khác

Ví dụ:

(-256)<<2 = -1024(-256)>>2 = -64

Trang 30

Các toán tử quan hệ

• Gồm các toán tử:

Toán tử Ý nghĩa Kiểu toán hạng Ví dụ

hoặc bằng Nguyên hoặc thực 2>=2, a>=b

hoặc bằng Nguyên hoặc thực 3<=8, a<=b

Trang 31

Các toán tử logic

• Gồm các toán tử:

Toán tử Ý nghĩa Kiểu toán hạng Ví dụ

! Phép phủ định 1 biểu thức logic !1, !(a>b)

&& Phép và 2 biểu thức logic 1&&0, a>=11

&& a<=99

|| Phép hoặc 2 biểu thức logic 1||0, a<-9 ||

a==0

Trang 33

Toán tử điều kiện

• Cú pháp:

Biểu thức 1 ? Biểu thức 2 : Biểu thức 3

Ý nghĩa: Biểu thức 1 nhận giá trị đúng thì toán tử trả về giá trị là Biểu thức 2, ngược lại toán tử trả về giá trị là Biểu thức 3

Ví dụ: a>b?a:b

Trang 34

- Biểu thức gán tên_biến=biểu_thức (Lưu ý: không

kết thúc bằng dấu ;) được sử dụng như các biểu thức thông thường khác

Ví dụ: c=(a=5)*(b=4);

a=b=c=20;

Trang 36

• Biểu thức dùng để gán giá trị cho x là biểu thức con ngoài cùng bên phải

Trang 37

Phép lấy địa chỉ của biến

• Tên biến được xem như tên vùng nhớ lưu trữ giá trị của biến

• Vùng nhớ được đánh địa chỉ  biến có địa chỉ

Trang 38

Phép ép kiểu

• Sử dụng khi biểu thức gồm các toán hạng khác kiểu hoặc khi cần gán giá trị thuộc kiểu này cho một biến thuộc kiểu khác

• Cú pháp:

(kiểu_dữ_liệu_mới) tên_biếnhoặc (kiểu_dữ_liệu_mới) (biểu thức)

Ví dụ: với khai báo int a,b;

((float)a)/b trả về kết quả phép chia chính xác theo kiểu số thực

(int) (a+0.5) trả về một kết quả theo kiểu số nguyên

• Lưu ý: kiểu dữ liệu mới phải “cao hơn” kiểu dữ liệu hiện tại, tránh ép kiểu từ “cao” xuống “thấp”

Trang 39

Thứ tự ưu tiên của các toán tử (1)

1 () [] -> :: Trái qua phải

2 ! ~ - ++ & * (type) sizeof Phải qua trái

3 * / % Trái qua phải

4 + - Trái qua phải

5 << >> Trái qua phải

6 < <= > >= Trái qua phải

7 == != Trái qua phải

8 & Trái qua phải

9 ^ Trái qua phải

10 | Trái qua phải

11 && Trái qua phải

12 || Trái qua phải

13 ? : Phải qua trái

14 = *= /= %= += -= <<= >>= &= ^= |= Phải qua trái

Trang 40

Thứ tự ưu tiên của các toán tử (2)

• Để việc tính toán được dễ dàng nên bổ sung các cặp dấu ngoặc () một cách hợp lý trong biểu thức

Ví dụ:

- n = 1+2*3 có thể viết thành n = 1+(2*3)

- a>=11 && a<=99

có thể viết thành (a>=11) && (a<=99)

Trang 42

- Một khối lệnh có thể chứa nhiều khối lệnh khác

- Thân hàm cũng được xem là một khối lệnh không nằm trong bất kỳ khối lệnh nào khác

Trang 43

Câu lệnh (3)

• Lưu ý (tiếp):

- Biến được khai báo ở đầu khối lệnh:

+ Chỉ có phạm vi hoạt động trong nội bộ khối lệnh

+ Được cấp phát bộ nhớ khi chương trình bắt đầu thực hiện khối lệnh, bộ nhớ này được giải phóng khi khối lệnh đã được thực hiện xong

+ Có thể đặt trùng tên với các biến được khai báo bên ngoài khối lệnh, khi đó các biến trùng tên được khai báo trong khối lệnh sẽ được ưu tiên sử dụng trong phạm vi khối lệnh

- Các biến khai báo ngoài khối lệnh mà không trùng tên với các biến khai báo bên trong khối lệnh thì có

Trang 44

Các kiểu dữ liệu cơ sở

• Khái niệm kiểu dữ liệu

• Phân loại kiểu dữ liệu

• Các kiểu dữ liệu cơ sở

Trang 45

Khái niệm kiểu dữ liệu

• Kiểu dữ liệu: xác định tập các giá trị mà một đối tượng thuộc kiểu đó có thể nhận được, cách thức lưu trữ dữ liệu và các phép toán có thể thực hiện

Ví dụ:

Kiểu dữ liệu int 2 byte:

- Biểu diễn các số nguyên có dấu trong miền giá trị -32768 32767

- Chiếm kích thước 2 byte khi lưu trữ

- Có thể thực hiện các phép toán: phép đảo dấu -, các phép toán số học + - * / %, các phép so sánh

< <= == > >= !=

Trang 46

Phân loại kiểu dữ liệu (1)

• Các kiểu dữ liệu cơ bản:

- Kiểu ký tự

- Kiểu số nguyên

- Kiểu số thực

• Kiểu do người dùng tự định nghĩa:

- Kiểu liệt kê

Trang 47

Phân loại kiểu dữ liệu (2)

• Các kiểu dữ liệu có cấu trúc:

Trang 48

Các kiểu dữ liệu cơ sở

• Kiểu ký tự

• Kiểu số nguyên

• Kiểu số thực

Trang 49

• Các hằng ký tự đặt trong cặp dấu nháy đơn ' ', các hằng xâu ký tự đặt trong cặp dấu nháy kép " "

Tên kiểu Kích thước lưu trữ Miền giá trị

[signed] char 1 byte -128 127

unsigned char 1 byte 0 255

Trang 51

Kiểu số nguyên

• Gồm 6 kiểu:

• Các hằng số nguyên được viết bình thường

Tên kiểu Kích thước Miền giá trị

int hoặc 4 byte2 byte -32768 32767 hoặc -2147483648 2147483647unsigned int hoặc 4 byte2 byte 0 65535 hoặc 0 4294967295

Trang 53

Ví dụ: 1.25E3, 3.14E-2, -5.4e2, -8.5e-3

Trang 55

2.4 Cấu trúc chương trình

• Cấu trúc chương trình

• Một vài chương trình đơn giản

• Các quy tắc xây dựng chương trình

Trang 56

Cấu trúc chương trình

• Gồm các phần theo thứ tự sau:

- Khai báo các tệp tiêu đề

- Khai báo các macro

- Định nghĩa các kiểu dữ liệu mới

- Khai báo nguyên mẫu của các hàm

- Khai báo các biến toàn cục

- Hàm main()

- Định nghĩa các hàm (đã khai báo nguyên mẫu)

Trang 57

Khai báo các tệp tiêu đề (1)

• Thư viện chuẩn:

- Gồm nhiều tệp tiêu đề chứa các chương trình con (hàm) được xây dựng sẵn Muốn sử dụng hàm nào cần khai báo tệp tiêu đề của thư viện chứa hàm đó

• Cú pháp khai báo tệp tiêu đề:

#include <tên_tệp_tiêu_đề>

hoặc #include "tên_tệp_tiêu_đề "

Ví dụ: #include <stdio.h>

#include "conio.h"

Trang 58

Khai báo các tệp tiêu đề (2)

• Các tệp tiêu đề cơ bản:

Tệp tiêu đề Chức năng

Trang 59

Khai báo các tệp tiêu đề (3)

• Lưu ý:

- Người lập trình cũng có thể xây dựng sẵn các hàm và đặt vào trong thư viện để dùng khi cần thiết

- Một số trình biên dịch cho phép thêm hàm do người lập trình xây dựng vào thư viện chuẩn Một số trình biên dịch yêu cầu người lập trình phải tạo thư viện riêng

Trang 60

Khai báo các macro

• Cú pháp:

#define tên giá_trị

Ví dụ: #define N 100

#define length (3+5) #define max(a,b) (a)>(b)?(a):(b)

Trang 61

Định nghĩa các kiểu dữ liệu mới

• Cú pháp:

typedef khai báo kiểu dữ liệu mới;

Ví dụ:

typedef int soluong;

typedef int mang100[100];

• Lưu ý: Sau khi định nghĩa các kiểu dữ liệu mới, có thể dùng tên kiểu dữ liệu mới để khai báo các biến, mảng, cấu trúc

Ví dụ:

soluong a,b;

mang100 c;

Trang 62

Khai báo nguyên mẫu của các hàm

• Cú pháp:

kiểu_dữ_liệu_trả_về tên_hàm(danh sách kiểu_dữ _liệu tên_tham_số);

Ví dụ: int tong(int a,int b);

float max(float a,float b,float c);

• Lưu ý:

- Không bắt buộc phải khai báo nguyên mẫu các hàm

- Việc khai báo nguyên mẫu cho phép trình biên dịch phát hiện lỗi khi gọi hàm (số lượng tham số không đúng) hoặc tự động chuyển đổi kiểu dữ liệu (ví dụ: chuyển từ kiểu int trong lời gọi hàm sang kiểu float của tham số)

Trang 63

Khai báo các biến toàn cục

Trang 64

Hàm main()

• Cú pháp:

kiểu_dữ_liệu_trả_về main(void){

các khai báo, các lệnh;

}Lưu ý: kiểu_dữ_liệu_trả_về là int

Ví dụ:

int main(void){

printf("Xin chao!");

printf("\nDay la chuong trinh thu nghiem.");return 0;

Trang 67

Một vài chương trình đơn giản (1)

• Chương trình viết câu thông báo ra màn hình:

Trang 68

Một vài chương trình đơn giản (2)

Trang 69

Các quy tắc xây dựng chương trình

• Quy tắc viết lệnh:

- Mỗi câu lệnh phải được kết thúc bằng dấu ;

- Mỗi câu lệnh nên đặt trên một dòng

- Khối lệnh gồm nhiều lệnh đơn phải đặt trong cặp dấu { }

• Quy tắc viết chú thích:

- Trên một dòng: //Lời chú thích

- Viết trên nhiều dòng: /* Lời chú thích */

• Căn lề

Ngày đăng: 11/08/2021, 21:03

TỪ KHÓA LIÊN QUAN

w