trợ trong thư viện chuẩn và những hàm được dịch riêng lẻ khác kết nối lại bởi bộ liên kết để cho ra mã có thể thực thi được. Bộ nạp (Loader): Mã thực thi được thi hành bởi bộ nạp của[r]
(1)NHẬP MÔN TIN HỌC
NHỮNG KHÁI NIỆM CƠ BẢN VỀ NGÔN NGỮ C
(2)Tài liệu
Slides TS.Đào Nam Anh thực dựa tài liệu [1,2] mã nguồn [3]:
1. B W Kernighan and D M Ritchie The C Programming Language Prentice Hall 1978, ISBN 0-13-110163-3
2. TS.Nguyễn Thị Thu Hà, TS.Nguyễn Hữu Quỳnh, TS.Nguyễn Thị Thanh Tân,
Giáo trình Nhập mơn tin học, Khoa CNTT,
Đại học Điện lực, 2013
(3)Nội dung
1. Giới thiệu ngơn ngữ lập trình C 2. Cấu trúc chương trình C
3. Biên dịch thực thi chương trình C 4. Các kiểu liệu sở dẫn xuất
5. Biến, hằng, định danh 6. Nhập xuất C 7. Bài tập c nh
(4)1.Giới thiệu ngơn ngữ lập trình C
i u
4
Ngôn ngữ C Brian W.Kernighan Dennis M.Ritchie phát triển vào đầu năm 70 với mục đích ban đầu phát triển hệ điều hành UNIX
(5)1.Giới thiệu ngơn ngữ lập trình C
i u
CNTT Nhập môn tin học
C Viện Tiêu chuẩn hoá Mỹ (ANSI:
American National Standard Institute) làm thành tiêu chuẩn với tên gọi ANSI C
(6)1.Giới thiệu ngơn ngữ lập trình C
.
c chương nh ch C n
CNTT Nhập môn tin học
Ngơn ngữ lập trình C thường sử dụng trình dịch:
Turbo C/C++, Borland C/C++ hãng Borland International Inc
C-Free của hãng phần mềm ProgramArts
Dev C/C++ hãng Bloodshed Software
Các phần mềm mã nguồn mở Code::Blocks, Eclipse
MSC, VC Microsoft Corp
Lattice C Lattice
(7)1.Giới thiệu ngơn ngữ lập trình C
.
c m a ngôn C
CNTT Nhập môn tin học
C ngơn ngữ lập trình cấu trúc Tuy nhiên, C
là ngôn ngữ cấu trúc khối, không cho phép việc tạo hàm hàm
C ngơn ngữ có độ thích nghi cao Bởi kiểu liệu cấu trúc điều khiển C có hầu hết máy tính nên thư viện lúc chạy cần để cài đặt chương trình gọn
(8)1.Giới thiệu ngơn ngữ lập trình C
.
c m a ngôn C
CNTT Nhập môn tin học
C sử dụng rộng rãi lĩnh vực chuyên nghiệp đáp ứng u cầu có tính hiệu cao
C cung cấp cấu trúc điều khiển câu lệnh lựa chọn, lệnh lặp giống Pascal
C cung cấp trỏ khả định địa số học
C cho phép hàm gọi đệ quy biến cục hàm tự động sinh tạo với lần gọi
(9)1.Giới thiệu ngôn ngữ lập trình C
u c n a t chương nh C
CNTT Nhập môn tin học
C có xác 32 từ khóa Những từ khóa kết hợp với cú pháp C hình thành ngơn ngữ C Nhưng nhiều trình biên dịch cho C thêm vào từ khóa dùng cho việc tổ chức nhớ giai đoạn tiền xử lý định
Một số quy tắc lập trình C sau:
Tất từ khóa chữ thường (khơng in hoa)
Ðoạn mã chương trình C có phân biệt chữ thường và chữ hoa Ví dụ: while khác với DO WHILE
(10)1.Giới thiệu ngơn ngữ lập trình C
u c n a t chương nh C
Nhập môn tin học 10
Cấu trúc C gồm phần: Phần tiền xử lý, phần khai báo biến
ngoài, hàm nguyên mẫu, định nghĩa hàm phần chương trình Một chương trình C thơng thường có dạng sau:
#include<stdio.h>//Gọi tiền xử lý
#define // định nghĩa xâu ký tự typedef // Định nghĩa kiểu liệu function prototype // Nguyên mẫu hàm int x,y; // Phần khai báo biến void main // Chương trình
{ float a; int k=6; printf (); scanf();
câu lệnh, lời gọi hàm getch();
}
function 1// Định nghĩa hàm {
câu lệnh thân hàm }
function {
(11)1.Giới thiệu ngơn ngữ lập trình C
u c n a t chương nh C
11
Phần tiền xử lý: Sử dụng thư viện cần dùng
trong chương trình bắt đầu dấu # từ khoá
include Tên thư viện đặt sau từ khoá include
và đặt dấu <>
Thư viện hàm chuẩn dùng cho tác vụ chung Thư viện tập tin (file) lớn đa số lại chứa nhiều tập tin nhỏ
Hàm chứa thư viện dùng cho nhiều loại tác vụ khác
Vài trình biên dịch cho phép hàm thêm vào thư viện chuẩn số khác lại yêu cầu tạo thư viện riêng
#include<stdio.h>//Gọi tiền xử lý
#define // định nghĩa xâu ký tự typedef // Định nghĩa kiểu liệu function prototype // Nguyên mẫu hàm int x,y; // Phần khai báo biến void main // Chương trình
{ float a; int k=6; printf (); scanf();
câu lệnh, lời gọi hàm getch();
}
function 1// Định nghĩa hàm {
câu lệnh thân hàm }
function {
(12)1.Giới thiệu ngơn ngữ lập trình C
u c n a t chương nh C
CNTT Nhập môn tin học
12
Phần khai báo biến ngoài: Đây
khu vực biến toàn cục, khai báo phần biến ngồi chương trình C
Khai báo hàm nguyên mẫu: Trong
Pascal chương trình có loại: thủ tục hàm, C có loại chương trình hàm Hàm C trả giá trị hay khơng trả giá trị Trong hàm có sử dụng khai báo biến dùng phạm vi hàm
#include<stdio.h>//Gọi tiền xử lý
#define // định nghĩa xâu ký tự typedef // Định nghĩa kiểu liệu function prototype // Nguyên mẫu hàm int x,y; // Phần khai báo biến ngồi void main // Chương trình
{ float a; int k=6; printf (); scanf();
câu lệnh, lời gọi hàm getch();
}
function 1// Định nghĩa hàm {
câu lệnh thân hàm }
function {
(13)1.Giới thiệu ngơn ngữ lập trình C
u c n a t chương nh C
13
Phần định nghĩa hàm: Chương trình C
được chia thành đơn vị gọi hàm
Tên hàm theo sau cặp dấu ngoặc đơn () Trong dấu ngoặc đơn có hay khơng có tham số (parameters)
Một định nghĩa hàm thường gồm câu lệnh, lời gọi hàm, chúng nằm dấu {} Dấu ngoặc nhọn mở { đánh dấu điểm bắt đầu khối mã lệnh, dấu ngoặc nhọn đóng } đánh dấu điểm kết thúc khối mã lệnh
#include<stdio.h>//Gọi tiền xử lý
#define // định nghĩa xâu ký tự typedef // Định nghĩa kiểu liệu function prototype // Nguyên mẫu hàm int x,y; // Phần khai báo biến void main // Chương trình
{ float a; int k=6; printf (); scanf();
câu lệnh, lời gọi hàm getch();
}
function 1// Định nghĩa hàm {
câu lệnh thân hàm }
function {
(14)1.Giới thiệu ngôn ngữ lập trình C
u c n a t chương nh C
14
Phần chương trình - Hàm main():
Hàm main() hàm gọi đến chương trình bắt đầu chạy Hệ
điều hành trao quyền điều khiển cho hàm main() chương trình C thực thi Lệnh getch() cuối thân chương trình dùng để lưu lại hình kết
#include<stdio.h>//Gọi tiền xử lý
#define // định nghĩa xâu ký tự typedef // Định nghĩa kiểu liệu function prototype // Nguyên mẫu hàm int x,y; // Phần khai báo biến void main // Chương trình
{ float a; int k=6; printf (); scanf();
câu lệnh, lời gọi hàm getch();
}
function 1// Định nghĩa hàm {
câu lệnh thân hàm }
function {
(15)1.Giới thiệu ngơn ngữ lập trình C
u c n a t chương nh C
15
Dấu kết thúc câu lệnh: Dòng int x,y;
trong đoạn mã mẫu câu lệnh
(statement) Một câu lệnh C kết thúc dấu chấm phẩy (;) C không hiểu việc xuống dịng dùng phím enter, khoảng trắng dùng phím spacebar hay khoảng cách dùng phím tab Có thể có nhiều câu lệnh hàng câu lệnh phải kết thúc dấu chấm phẩy Một câu lệnh không kết thúc dấu chấm phẩy xem câu lệnh sai
#include<stdio.h>//Gọi tiền xử lý
#define // định nghĩa xâu ký tự typedef // Định nghĩa kiểu liệu function prototype // Nguyên mẫu hàm int x,y; // Phần khai báo biến void main // Chương trình
{ float a; int k=6; printf (); scanf();
câu lệnh, lời gọi hàm getch();
}
function 1// Định nghĩa hàm {
câu lệnh thân hàm }
function {
(16)1.Giới thiệu ngôn ngữ lập trình C
u c n a t chương nh C
CNTT Nhập mơn tin học 16
Dịng thích (Comment): Những thích thường
được viết để mơ tả công việc lệnh đặc biệt, hàm hay tồn chương trình Trình biên dịch khơng dịch chúng Trong C, thích bắt đầu ký hiệu /* kết thúc */ Trường hợp thích có nhiều
dịng, ta phải ý ký hiệu kết thúc (*/), thiếu ký hiệu này, toàn chương trình bị coi thích Trong trường hợp thích dịng ta dùng // Ví dụ:
(17)1.Giới thiệu ngơn ngữ lập trình C
. Biên ch c thi t chương nh
CNTT Nhập môn tin học 17
# include file
Tập tin thêm vào
Source file
Mã nguồn
Compiler
Trình biên dịch
Object File
Tập tin đối tượng
Library File
Thư viện
Other User-generated Object
File
Các tập tin thực thi khác người
dùng
Linker
Bộ liên kết
Executable File
(18)1.Giới thiệu ngôn ngữ lập trình C
. Biên ch c thi t chương nh
18
Soạn thảo/Xử lý từ: Lập trình viên dùng trình
xử lý từ (word processor) hay trình soạn thảo (editor) để viết mã nguồn (source code) C chấp nhận loại mã nguồn viết dạng tập tin văn chuẩn
Mã nguồn: Ðây đoạn văn chương trình mà
người dùng đọc Nó đầu vào trình biên dịch C
Bộ tiền xử lý C: Từ mã nguồn, bước
chuyển qua tiền xử lý C Bộ tiền xử lý xem xét câu lệnh bắt đầu dấu #
(19)1.Giới thiệu ngơn ngữ lập trình C
. Biên ch c thi t chương nh
CNTT Nhập môn tin học 19
Mã nguồn mở rộng C: Bộ tiền xử lý C khai triển
các thị tiền biên dịch đưa kết
Trình biên dịch C (Compiler)
Trình biên dịch C dịch mã nguồn mở rộng thành ngôn ngữ máy để máy tính hiểu Nếu chương trình
(20)1.Giới thiệu ngơn ngữ lập trình C
. Biên ch c thi t chương nh
CNTT Nhập môn tin học 20
Bộ liên kết (Linker): Mã đối tượng với thủ tục hỗ
trợ thư viện chuẩn hàm dịch riêng lẻ khác kết nối lại liên kết mã thực thi
Bộ nạp (Loader): Mã thực thi thi hành nạp