ỦY BAN NHÂN DÂN TỈNH VĨNH LONG
TRƯỜNG CAO ĐẲNG NGHỀ VĨNH LONG
GIÁO TRÌNH
MƠN HỌC: LẬP TRÌNH CĂN BẢN
NGHỀ: KỸ THUẬT SỬA CHỮA, LẮP RÁP MÁY TÍNH
TRÌNH ĐỘ: CAO ĐẲNG LIÊN THÔNG
(Ban hành theo Quyết định số 172 /QĐ - CĐNVL ngày 15 tháng 04 năm 2020
của Hiệu trưởng trường Cao đẳng nghề Vĩnh Long
(Lưu hành nội bộ)
NĂM 2020
ỦY BAN NHÂN DÂN TỈNH VĨNH LONG
TRƯỜNG CAO ĐẲNG NGHỀ VĨNH LONG
Tác giả biên soạn: ThS. Nguyễn Hồng Thắm
GIÁO TRÌNH
MƠN HỌC: LẬP TRÌNH CĂN BẢN
NGHỀ: KỸ THUẬT SỬA CHỮA, LẮP RÁP MÁY TÍNH
TRÌNH ĐỘ: CAO ĐẲNG LIÊN THƠNG
NĂM 2020
LỜI MỞ ĐẦU
Để đáp ứng nhu cầu học tập của các em học sinh, nhất là học sinh chuyên ngành
tin học, Khoa Công nghệ thông in Trường Cao đẳng nghề Vĩnh Long chúng tôi đã tiến
hành biên soạn các giáo trình trong chương trình học. Giáo trình này cũng được biên
soạn dựa trên kinh nghiệm giảng dạy nhiều năm môn Lập Trình Căn Bản của chúng tơi.
Mục tiêu của nó nhằm giúp các em học sinh chuyên ngành có một tài liệu cô
đọng dùng làm tài liệu học tập, nhưng chúng tơi cũng khơng loại trừ tồn bộ các đối
tượng khác tham khảo. Chúng tôi nghĩ rằng các em học sinh, sinh viên không chuyên
tin và những người quan tâm tới lập trình căn bản sẽ tìm được trong này những điều hữu
ích.
Mặc dù đã rất cố gắng nhiều trong quá trình biên soạn giáo trình nhưng chắc chắn
giáo trình sẽ cịn nhiều thiếu sót và hạn chế. Rất mong nhận được sự đóng góp ý kiến
quý báu của học sinh và các bạn đọc để giáo trình ngày một hoàn thiện hơn.
Tác giả.
MỤC LỤC
BÀI MỞ ĐẦU: TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH .....................................1
1. Giới thiệu các khái niệm cơ bản về ngơn ngữ lâp trình ..........................................1
1.1. Lập trình máy tính ............................................................................................1
1.2. Bài toán .............................................................................................................1
1.3. Thuật toán .........................................................................................................1
2. Giới thiệu lịch sử phát triển và ứng dụng của ngơn ngữ lập trình ...........................3
3. Xây dựng thuật toán bằng sơ đồ khối ......................................................................5
4. Làm quen môi trường phát triển phần mềm ............................................................6
4.1. Giao diện chương trình Turbo C ......................................................................6
4.2. Các phím thường hay sử dụng đối với chương trình C ....................................6
4.3. Thốt khỏi chương trình C ...............................................................................7
5. Sử dụng sự trợ giúp từ help file về cú pháp lệnh, về cú pháp hàm, các chương
trình mẫu ......................................................................................................................7
5.1. Trợ giúp từ help file về cú pháp lệnh, về cú pháp hàm ....................................7
5.2. Các chương trình mẫu ......................................................................................7
BÀI TẬP ........................................................................................................................12
CHƯƠNG 1: GIỚI THIỆU NGƠN NGỮ LẬP TRÌNH C ...........................................13
1. Giới thiệu ...............................................................................................................13
2. Bộ từ vựng của C ...................................................................................................14
1.1. Các ký tự dùng trong C ..................................................................................14
1.2. Từ khóa (Keyword) ........................................................................................14
1.3. Tên hay định danh (Identifier) ........................................................................15
1.4. Dấu chấm phẩy (;) ..........................................................................................15
1.5. Câu chú thích ..................................................................................................15
3. Cấu trúc một chương trình C .................................................................................16
BÀI TẬP ........................................................................................................................17
CHƯƠNG 2: CÁC KIỂU DỮ LIỆU CƠ SỞ ................................................................18
1. Các kiểu dữ liệu cơ sở ...........................................................................................18
1.1. Kiểu số nguyên - int .......................................................................................18
1.2. Kiểu số thực - float .........................................................................................18
1.3. Kiểu luận lý ....................................................................................................19
1.4. Kiểu ký tự - char .............................................................................................19
2. Biến, hằng, câu lệnh và biểu thức..........................................................................19
2.1. Hằng ký tự và hằng chuỗi ...............................................................................19
2.2. Biến và lệnh gán giá trị cho biến ....................................................................21
2.3. Hàm ................................................................................................................21
2.4. Các phép toán .................................................................................................22
2.5. Biểu thức.........................................................................................................26
2.6. Các lệnh và khối lệnh .....................................................................................26
3. Câu lệnh nhập xuất ................................................................................................27
3.1. Nhập dữ liệu từ bàn phím ...............................................................................27
3.2. Xuất dữ liệu ra màn hình ................................................................................27
BÀI TẬP ........................................................................................................................30
CHƯƠNG 3: CÁC CẤU TRÚC ĐIỀU KHIỂN ...........................................................32
1. Khái niệm về lệnh cấu trúc ....................................................................................32
2. Các lệnh cấu trúc lựa chọn ....................................................................................32
2.1. Câu lệnh điều kiện ..........................................................................................32
2.2. Câu lệnh rẽ nhánh ...........................................................................................34
3. Các câu lệnh lặp .....................................................................................................36
3.1. Câu lệnh for ....................................................................................................36
3.2. Câu lệnh while ................................................................................................37
3.3. Câu lệnh do ... while .......................................................................................38
3.4. So sánh sự khác nhau của các vòng lặp ..........................................................39
4. Các lệnh chuyển điều khiển ...................................................................................39
4.1. Câu lệnh break ................................................................................................39
4.2.Câu lệnh continue ............................................................................................40
4.3.Câu lệnh Goto ..................................................................................................40
4.4. Hàm Exit .........................................................................................................40
BÀI TẬP ........................................................................................................................42
CHƯƠNG 4: HÀM .......................................................................................................44
1. Khái niệm chương trình con ..................................................................................44
1.1. Cú pháp ...........................................................................................................44
1.2. Một số lưu ý ....................................................................................................45
2. Cấu trúc chương trình có sử dụng chương trình con .............................................46
3. Các hàm trong ngơn ngữ lập trình .........................................................................49
4. Tham trị và tham biến............................................................................................50
4.1. Tham trị ..........................................................................................................50
4.2 Tham biến ........................................................................................................50
5. Biến toàn cục và biến địa phương .........................................................................51
5.1. Biến toàn cục ..................................................................................................51
5.2. Biến địa phương .............................................................................................53
BÀI TẬP ........................................................................................................................54
CHƯƠNG 5: DỮ LIỆU KIỂU MẢNG (ARRAY), CHUỖI KÝ TỰ (STRING) VÀ
BẢN CHI (STRUCT) ....................................................................................................55
1. Dữ liệu kiểu mảng .................................................................................................55
1.1. Khái niệm .......................................................................................................55
1.2. Khai báo mảng ................................................................................................55
1.3. Gán giá trị cho mảng ......................................................................................56
1.4. Một số bài toán trên mảng ..............................................................................57
1.5. Mảng nhiều chiều ...........................................................................................59
2. Dữ liệu kiểu chuỗi ký tự ........................................................................................63
2.1. Khái niệm .......................................................................................................63
2.2. Khai báo chuỗi ................................................................................................63
2.3. Các thao tác trên chuỗi ...................................................................................64
2.4. Nhập, xuất chuỗi .............................................................................................65
2.5. Các hàm làm việc với chuỗi ...........................................................................66
3. Dữ liệu kiểu bản ghi ..............................................................................................68
3.1. Khái niệm .......................................................................................................68
3.2. Khai báo kiểu bản ghi .....................................................................................70
3.3. Truy xuất kiểu bản ghi ....................................................................................70
BÀI TẬP ........................................................................................................................73
TÀI LIỆU THAM KHẢO .............................................................................................77
1
BÀI MỞ ĐẦU: TỔNG QUAN VỀ NGƠN NGỮ LẬP TRÌNH
Mục tiêu
− Trình bày được các khái niệm và lịch sử phát triển của ngơn ngữ lập trình;
− Nêu được cách xây dựng thuật tốn trong ngơn ngữ lập trình;
− Xây dựng được thuật toán bằng sơ đồ khối;
− Cẩn thận, tự giác trong học tập.
Nội dung
1. Giới thiệu các khái niệm cơ bản về ngơn ngữ lâp trình
Lập trình là việc sử dụng cấu trúc dữ liệu và các lệnh của ngơn ngữ lập trình cụ
thể để mơ tả dữ liệu và diễn đạt các thao tác của thuật toán.
1.1. Lập trình máy tính
- Gọi tắt là lập trình (programming).
- Nghệ thuật cài đặt một hoặc nhiều thuật toán trừu tượng có liên quan với nhau
bằng một ngơn ngữ lập trình để tạo ra một chương trình máy tính.
1.2. Bài tốn
- Là việc nào đó ta muốn máy thực hiện để từ thơng tin đưa vào (INPUT) tìm
được thơng tin ra (OUTPUT)
- Ví dụ : Giài phương trình bậc nhất ax + b = 0
INPUT : a, b thuộc R
OUTPUT : nghiệm của phương trình ax + b = 0
1.3. Thuật toán
- Thuật toán để giải quyết một bài toán là một dãy hữu hạn các thao tác được sắp
xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác đó, từ Input của
bài tốn, ta nhận được Output cần tìm
- Ví dụ: Thuật tốn giải phương trình: ax + b = 0 (a, b là các số thực)
1.3.1. Các đặc trưng của thuật toán
- Dữ liệu đầu vào (Input): Mỗi thuật tốn cần có một số (có thể bằng 0) các dữ
liệu ban đầu
- Kết quả (Output): Thuật toán phải cho ra được kết quả
- Tính xác định: Các thao tác phải xác định, không nhập nhằng, lẫn lộn, tùy tiện.
2
- Tính khả thi: Thuật tốn phải có khả năng thực hiện được trong một thời gian
hữu hạn.
- Tính khách quan: được viết bởi nhiều người trên máy tính nhưng kết quả phải
như nhau.
- Tính phổ dụng: có thể áp dụng cho một lớp các bài tốn có đầu vào tương tự
nhau.
- Tính kết thúc: hữu hạn các bước tính tốn
1.3.2. Các bước xây dựng chương trình
Sử dụng ngơn ngữ tự nhiên
Sử dụng mã giả
- Vay mượn ngôn ngữ nào đó (ví dụ Pascal) để biểu diễn thuật tốn.
3
- Cài đặt thuật toán bằng C/C++
2. Giới thiệu lịch sử phát triển và ứng dụng của ngôn ngữ lập trình
Kể từ khi ra đời năm 1837, máy tính dần có tốc độ nhanh hơn và cũng đồng nghĩa
với việc phải làm nhiều việc hơn. Để có thể đáp ứng những điều này, các ngơn ngữ lập
trình cũng phải phát triển theo để đơn giản hơn cho lập trình viên những cũng vẫn phải
đáp ứng được các yêu cầu phức tạp của chương trình.
Những năm 1950
Autocode (1952): Đây là tập hợp một loạt những hệ thống ngơn ngữ lập trình đơn
giản được phát triển vào những năm 50 cho hệ thống máy tính kỹ thuật số tại đại học
Manchester, Cambridge và London và được coi là ngơn ngữ lập trình chính thức đầu tiên.
Autocode được phát triển bởi Alick Glennie và rất được phổ biến vào thời gian này.
Những năm 1970
Pascal (1970): đây là ngôn ngữ được đặt theo tên nhà tốn học người Pháp Blaise
Pascal. Ngơn ngữ này được sáng tạo bởi Niklaus Wirth cho phép người dùng có thể tự
xác định dạng dữ liệu của mình theo kiểu danh sách, sơ đồ cây hay đồ thị.
4
C (1972): Đây là một trong những ngôn ngữ lập trình được sử dụng nhiều nhất mọi
thời đại. C được thế kế để lập trình theo cấu trúc. Phần mã nguồn của ngôn ngữ này ở dạng
văn bản không định dạng và dùng những dấu chấm, phẩy để thiển hiện cấu trúc lệnh.
Những năm 80
C++ (1980): ngôn ngữ này chủ yếu để lập trình hệ thống nhưng đến nay đã mở
rộng ra cho cả những máy tính cá nhân thơng thường, máy chủ để tạo ra những ứng dụng
thông thường. Hầu hết các câu lệnh của ngôn ngữ này được kế thừa từ C và cũng vẫn
giữ nguyên khả năng hướng đối tượng và lập trình tổng quát.
Perl (1987): thuộc nhóm ngơn ngữ lập trình bậc cao. Ngơn ngữ này vay mượn
khơng ít tính năng từ những ngơn ngữ khác như C, AWK và sad. Ban đầu nó thơ sơ đến
mức hướng dẫn sử dụng chỉ có 1 trang. Thế nhưng đến nay nó đã có thêm nhiều phiên
bản và nhiều thay đổi so với ban đầu.
Từ 1990 đến năm 2000
Python (1991): ngôn ngữ này được thiết kế cực kỳ đơn giản, thậm chí là có khả
năng đọc được như bảng chữ cái. Triết lý của những nhà phát triển ngơn ngữ nay đó là
làm cho mã nguồn ngắn hơn, không dài và phức tạp như C++ hay Java.
Java (1995): ngôn ngữ này được phát triển vớ
Với mục tiêu càng ít phụ thuộc vào khả năng vận hành thực tế của thiết bị càng
tốt. Nói cách khác là nó chỉ cần viết một lần trên một máy, và chạy được trên mọi máy
khác. Chính vì vậy mà đến nay, từ máy tính để bàn đến điện thoại di động Symbian S40
ta đều có thể gặp các chương trình Java.
PHP (1995): đây là ngôn ngữ sử dụng thực thi trên máy chủ và dùng cho việc
phát triển web. Nó thực hiện các yêu cầu của người dùng sau đó trả kết quả lên trình
duyệt qua việc kết hợp với HTML tạo ra giao diện các trang web hiện nay. Khi mới xuất
hiện, PHP không được định nghĩa là một ngôn ngữ lập trình, tuy nhiên qua thời gian,
ngơn ngữ này đã có một lượng người dùng đơng đảo và vẫn là sự lựa chọn của nhiều
nhà phát triển web ngày nay.
Những năm 2000
C# (2001): Visual Basic .NET (2001): Đây là ngôn ngữ được phát triển trên nền
Visual Basic và thực hiện trên nền tảng .NET framwork. Đây là lý do vì sao khi cài đặt
một số chương trình sẽ có u cầu cài đặt thêm .NET framwork phiên bản nào đó. Nó
sử dụng các câu lệnh để xác định hành động của chương trình giống như Visual C#.
Từ 2010 đến nay
Swift (2014): Đây là ngôn ngữ được phát triển bởi Apple cho những nhà phát
triển iOS và OSX (hệ điều hành Mac). Ngôn ngữ “trẻ nhất” này được hãng giới thiệu tại
sự kiện WWDC 2014. Ngơn ngữ này có ưu điểm là mã nguồn rất ngắn và dễ đọc. Sau
5
khi viết, các chương trình có thể được kiểm tra rất nhanh và các bài kiểm tra cũng sẽ ở
cấp độ cao hơn. Ngồi ra đồ hoạ các chương trình dùng ngôn ngữ này cũng sẽ đẹp hơn
nhưng yêu cầu phần cứng sẽ thấp hơn.
Tương lai của lập trình
Các ngơn ngữ lập trình ngày càng được phát triển do đó lập trình viên cũng phải
liên tục cập nhật bản thân để có thể bắt kịp xu thế này. Việc làm liên quan đến ngành
lập trình cũng đang được dự báo tăng trung bình 8% ở mỗi nước cũng như mức lương
trung bình cho cơng việc này đang ở mức 74.000 USD một năm.
Số lượng những nhà phát triển hiện nay cũng đang tăng lên, dần vượt nhu cầu dự
kiến số dự án phát triển sẽ lăng lên 22% đến năm 2022. Do đó mức lương cho những
người làm cơng việc này có thể lên mức 93,350 USD một năm.
3. Xây dựng thuật toán bằng sơ đồ khối
Lưu đồ thuật toán là cơng cụ dùng để biểu diễn thuật tốn, mơ tả nhập (input), dữ
liệu xuất (output) và luồng xữ lý thơng qua các ký hiệu hình học. Cơng cụ này rất thích
hợp để bạn học cách tư duy phân tích bài toán.
Các ký hiệu
Để vẽ lưu đồ thuật toán, bạn cần nhớ và tuân thủ các ký hiệu sau đây:
Khối giới hạn
Chỉ thị bắt đầu và kết thúc
Khối vào ra
Nhập/ Xuất dữ liệu
Khối lựa chọn
Tùy điều kiện sẽ rẽ nhánh
Khối thao tác
Ghi thao tác cần thực hiện
Đường đi
Chỉ hướng thao tác tiếp theo
Lưu đồ thuật toán được duyệt lưu đồ thuật tốn theo trình tự sau:
− Duyệt từ trên xuống.
− Duyệt từ trái sang phải.
Để cho dễ hình dung, chúng ta sẽ tìm hiểu các bài tồn sau:
Ví dụ: Giải phương trình bậc nhất ax + b = 0
6
4. Làm quen môi trường phát triển phần mềm
4.1. Giao diện chương trình Turbo C
Chạy Turbo C cũng giống như chạy các chương trình khác trong mơi trường DOS
hay Windows, màn hình sẽ xuất hiện menu của Turbo C có giao diện như sau:
Giao diện Turbo C
4.2. Các phím thường hay sử dụng đối với chương trình C
- Alt-Enter: phóng to/thu nhỏ màn hình C
- F5: phóng to cửa sổ của một file chương trình *.cpp hoặc *.c
- F6: chuyển đổi giữa các cửa sổ file chương trình.
- F2: lưu một file chương trình.
- F3: mở một cửa sổ mới để tạo một file chương trình.
- Alt-F5: xem kết quả chạy chương trình.
- F7/F8: chạy chương trình từng bước.
- F9: biên dịch chương trình.
- Ctrl-F9: chạy chương trình.
7
4.3. Thốt khỏi chương trình C
Có hai cách cơ bản để thốt khỏi C:
- Nhấn tổ hợp phím ALT+X hoặc
- Nhấn tổ hợp phím Alt + F sau đó dùng phím mũi tên di đến mục Quit và ấn Enter.
5. Sử dụng sự trợ giúp từ help file về cú pháp lệnh, về cú pháp hàm, các chương
trình mẫu
5.1. Trợ giúp từ help file về cú pháp lệnh, về cú pháp hàm
Trong quá trình soạn thảo chương trình chúng ta có thể sử dụng các phím sau:
Các phím xem thơng tin trợ giúp:
- F1: Xem tồn bộ thơng tin trong phần trợ giúp.
- Ctrl-F1: Trợ giúp theo ngữ cảnh (tức là khi con trỏ đang ở trong một lệnh hoặc
hàm nào đó, gõ phím Ctrl-F1 thì chúng ta sẽ có được các thông tin về cú pháp lệnh hoặc
cú pháp hàm)
Trên menu Help bao gồm các lệnh gọi trợ giúp khi người lập trình cần giúp đỡ
một số vấn đề nào đó như: Cú pháp câu lệnh, cách sử dụng các hàm có sẵn…
- Lệnh Contents: Hiển thị tồn bộ nội dung của phần help.
- Lệnh Index : Hiển thị bảng tìm kiếm theo chỉ mục.
- Các lệnh cịn lại, chúng ta sẽ tìm hiểu khi thực hành trên máy.
5.2. Các chương trình mẫu
5.2.1. Tạo một file chương trình trong C
Để tạo một file chương trình trong C, sau khi đã mở C xong nhấp chuột menu
File →New (hoặc nhấn phím F3), màn hình xuất hiện như sau:
Màn hình soạn thảo
Ví dụ: Tạo một chương trình lưu với tên Vidu.cpp để xuất ra câu Xin chao!!!
8
#include<stdio.h>
#include<conio.h>
void main()
//dấu mở ngoặc nhọn ở dưới
{
printf(“Xin chao!!!”);
getch();
}
Màn hình soạn thảo
Sau khi soạn thảo xong ta tiến hành:
- Nhấn F9: biên dịch, nếu báo:
Error …
: chương trình bị lỗi, tiến hành sữa lỗi xem mục 2.
Warning … : cảnh báo không nhất thiết phải sữa lỗi xem mục 3.
Success : Press any key : chương trình viết đúng cú pháp có thể chạy
được, nhấn tổ hợp phím CTRL – F9 để chạy chương trình.
Màn hình báo biên dịch thành cơng
Màn hình màu đen sẽ xuất hiện và hiển thị ra câu thơng báo ‘Xin chao!!!’ theo
như u cầu:
Màn hình hiển thị kết quả chương trình
Gõ Enter để trở về giao diện xanh của chương trình.
4.2.2. Các lỗi và cách sửa lỗi
Dưới đây là các lỗi thông dụng hay gặp phải khi sử dụng phần mềm C, và vị trí
sai được phát hiện chính là dịng được tơ đậm màu xanh:
9
Lỗi không khai báo thư viện cho các câu lệnh được sử
dụng trong file chương trình
Thơng báo này thường gặp là Function ‘tên câu lệnh’ should have a prototype
như hình dưới, có nghĩa là câu lệnh ‘tên câu lệnh’ được sử dụng trong chương trình
nhưng chưa khai báo thư viện chứa câu lệnh này. (hoặc gõ sai tên câu lệnh)
Màn hình lỗi thiếu thư viện
Lỗi khơng chỉ đúng đường dẫn đến các tệp thư viện chương
trình C
Câu thơng báo lỗi thường gặp là Unable
to
open
include
file
‘stdio.h’ hoặc conio.h’ như hình vẽ dưới, phần mềm C khơng tìm thấy các file
thư viện mà chương trình có sử dụng.
Màn hình lỗi khơng chỉ dẫn đúng đường dẫn đến thư viện
Lỗi thiếu dấu chấm phẩy (dấu kết thúc mỗi câu lệnh
trong C)
Câu thông báo lỗi thường gặp là Statement missing; như hình dưới, có
nghĩa là thiếu một dấu chấm phẩy ở một dòng lệnh nào đó trong chương trình.
10
Màn hình lỗi thiếu dấu ;
Các cảnh báo (Warning)
Các cảnh báo thường khơng ảnh hưởng đến việc chạy chương trình, tuy nhiên
khi có cảnh báo thì chúng ta cũng nên điều chỉnh các dịng lệnh để khắc phục cảnh báo
đó.
Cảnh báo ‘Function should return a value’
Cảnh báo này cho biết rằng trong chương trình có sử dụng hàm (ví dụ hàm main())
nhưng không khai báo kiểu giá trị trả về của hàm như hình sau:
Màn hình lỗi cảnh báo khơng khai báo kiểu giá trị trả về
Cảnh báo ‘… i assigned a value that is never used’
Cảnh báo này cho biết trong chương trình có khai báo biến, gán giá trị cho biến
nhưng lại không sử dụng biến này khắc phục cảnh báo này bằng cách xóa đi biến
được khai đó.
11
Màn hình cảnh báo khai báo biến, gán trị nhưng khơng sử dụng
Chương trình chạy vơ hạn
Lỗi này xảy ra khi đã biên dịch chương trình (ấn F9) thành cơng và sau khi ấn
Ctrl-F9 để chạy chương trình thì nó chạy vơ hạn khơng thể thốt ra trở lại cửa sổ chương
trình được sau khi ấn Enter nhiều lần.
- Để tạm dừng chương trình và trở về cửa sổ chương trình, gõ tổ hợp phím CtrlBreak → sau đó gõ phím Ctrl-F2 để làm mất dịng được tơ màu xanh đậm.
- Tiến hành chỉnh sửa code chương trình và lại lưu, biên dịch và chạy chương
trình.
Khơng xem được kết quả chạy chương trình
Lỗi này xảy ra sau khi ấn tổ hợp phím Ctrl-F9 mà vẫn khơng xem được kết quả
chạy chương trình, đồng thời vẫn giữ nguyên cửa sổ file chương trình.
- Khắc phục bằng cách ấn tổ hợp phím Alt-F5 để xem kết quả chạy chương trình
hoặc vào chỉnh sửa code (thêm dịng getch() ở kề cuối chương trình).
12
BÀI TẬP
Lý thuyết
1. Thuật tốn là gì? Trình bày các tính chất quan trọng của một thuật tốn?
2. Các bước xây dựng chương trình?
3. Các cách biểu diễn thuật tốn? Ưu và khuyết điểm của từng phương pháp?
Cho ví dụ minh họa
Thực hành
4. Nhập năm sinh của một người. Tính tuổi người đó.
5. Nhập 2 số a và b. Tính tổng, hiệu, tích và thương của hai số đó.
6. Nhập tên sản phẩm, số lượng và đơn giá. Tính tiền và thuế giá trị gia tăng phải
trả, biết:
a. tiền = số lượng * đơn giá
b. thuế giá trị gia tăng = 10% tiền
7. Nhập điểm thi và hệ số 3 mơn Tốn, Lý, Hóa của một sinh viên. Tính điểm
trung bình của sinh viên đó.
8. Nhập bán kính của đường trịn. Tính chu vi và diện tích của hình trịn đó.
9. Nhập vào số xe (gồm 4 chữ số) của bạn. Cho biết số xe của bạn được mấy nút?
10. Nhập vào 2 số nguyên. Tính min và max của hai số đó.
13
CHƯƠNG 1: GIỚI THIỆU NGƠN NGỮ LẬP TRÌNH C
Mục tiêu
− Giới thiệu được ngơn ngữ lập trình C;
− Nêu được bộ từ vựng của C;
− Trình bày được cấu trúc một chương trình C;
− Chạy được chương trình trong C;
− Thực hiện các thao tác an tồn với máy tính.
Nội dung
1. Giới thiệu
C là ngơn ngữ lập trình cấp cao, được sử dụng rất phổ biến để lập trình hệ thống
cùng với Assembler và phát triển các ứng dụng.
Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của thế kỷ XX, Dennish Ritchie
(làm việc tại phịng thí nghiệm Bell) đã phát triển ngơn ngữ lập trình C dựa trên ngôn ngữ
BCPL (do Martin Richards đưa ra vào năm 1967) và ngôn ngữ B (do Ken Thompson phát
triển từ ngôn ngữ BCPL vào năm 1970 khi viết hệ điều hành UNIX đầu tiên trên máy
PDP-7) và được cài đặt lần đầu tiên trên hệ điều hành UNIX của máy DEC PDP-11.
Năm 1978, Dennish Ritchie và B.W Kernighan đã cho xuất bản quyển “Ngơn
ngữ lập trình C” và được phổ biến rộng rãi đến nay.
Lúc ban đầu, C được thiết kế nhằm lập trình trong mơi trường của hệ điều hành
Unix nhằm mục đích hỗ trợ cho các cơng việc lập trình phức tạp. Nhưng về sau, với
những nhu cầu phát triển ngày một tăng của cơng việc lập trình, C đã vượt qua khn
khổ của phịng thí nghiệm Bell và nhanh chóng hội nhập vào thế giới lập trình để rồi các
cơng ty lập trình sử dụng một cách rộng rãi. Sau đó, các cơng ty sản xuất phần mềm lần
lượt đưa ra các phiên bản hỗ trợ cho việc lập trình bằng ngơn ngữ C và chuẩn ANSI C
cũng được khai sinh từ đó.
Ngơn ngữ lập trình C là một ngơn ngữ lập trình hệ thống rất mạnh và rất “mềm
dẻo”, có một thư viện gồm rất nhiều các hàm (function) đã được tạo sẵn. Người lập trình
có thể tận dụng các hàm này để giải quyết các bài tốn mà khơng cần phải tạo mới. Hơn
thế nữa, ngơn ngữ C hỗ trợ rất nhiều phép tốn nên phù hợp cho việc giải quyết các bài
toán kỹ thuật có nhiều cơng thức phức tạp. Ngồi ra, C cũng cho phép người lập trình tự
định nghĩa thêm các kiểu dữ liệu trừu tượng khác. Tuy nhiên, điều mà người mới vừa học
lập trình C thường gặp “rắc rối” là “hơi khó hiểu” do sự “mềm dẻo” của C. Dù vậy, C
được phổ biến khá rộng rãi và đã trở thành một cơng cụ lập trình khá mạnh, được sử dụng
như là một ngơn ngữ lập trình chủ yếu trong việc xây dựng những phần mềm hiện nay.
14
Ngơn ngữ C có những đặc điểm cơ bản sau:
- Tính cơ đọng (compact): C chỉ có 32 từ khóa chuẩn và 40 toán tử chuẩn, nhưng
hầu hết đều được biểu diễn bằng những chuỗi ký tự ngắn gọn.
- Tính cấu trúc (structured): C có một tập hợp những chỉ thị của lập trình như cấu
trúc lựa chọn, lặp… Từ đó các chương trình viết bằng C được tổ chức rõ ràng, dễ hiểu.
- Tính tương thích (compatible): C có bộ tiền xử lý và một thư viện chuẩn vô
cùng phong phú nên khi chuyển từ máy tính này sang máy tính khác các chương trình
viết bằng C vẫn hồn tồn tương thích.
- Tính linh động (flexible): C là một ngôn ngữ rất uyển chuyển và cú pháp, chấp
nhận nhiều cách thể hiện, có thể thu gọn kích thước của các mã lệnh làm chương trình
chạy nhanh hơn.
- Biên dịch (compile): C cho phép biên dịch nhiều tập tin chương trình riêng rẽ
thành các tập tin đối tượng (object) và liên kết (link) các đối tượng đó lại với nhau thành
một chương trình có thể thực thi được (executable) thống nhất.
2. Bộ từ vựng của C
1.1. Các ký tự dùng trong C
C là ngơn ngữ lập trình phân biệt chữ In (Upcase) và chữ thuờng (Lowcase) trong
câu lệnh, biến, hằng, kiểu. Các ký tự hợp lệ đuợc liệt kê duới đây:
− Bộ chữ cái 26 ký tự Latinh A, B, C… Z, a, b, c… z
− Bộ chữ số thập phân : 0, 1, 2, …, 9
− Các ký hiệu tốn học thơng dụng : + - * / = < > ( )
− Các ký tự đặc biệt : . , : ; [ ] % \ # $ ‘, gạch nối _, ‘ ’
1.2. Từ khóa (Keyword)
Từ khóa là các từ dành riêng trong ngôn ngữ, mỗi từ có chức năng nhất định và
khi sử dụng phải viết đúng cú pháp. Từ khóa phân biệt chữ hoa chữ thuờng. Ngồi ra,
khơng thể sử dụng từ khóa để đặt tên cho các biến, hàm, tên chương trình con. Từ khóa
được chia thành các loại sau đây:
15
Chú ý: Trong ngơn ngữ lập trình C từ khóa bao giờ cũng được viết bằng chữ
thường.
1.3. Tên hay định danh (Identifier)
Tên hay định danh là một dãy ký tự dùng để chỉ tên một hằng số, hằng ký tự, tên
một biến, một kiểu dữ liệu, một hàm. Tên không được trùng với các từ khóa và được tạo
thành từ các chữ cái và các chữ số nhưng bắt buộc chữ đầu phải là chữ cái hoặc dấu gạch
duới _. Có thể sử dụng ký tự _ chèn trong tên nhưng không cho phép chèn giữa các
khoảng trắng. Tuy nhiên ta nên đặt tên ngắn gọn, dễ nhớ và đầy đủ ý nghĩa.
Ví dụ:
Các tên hợp lệ: GiaiPhuongTrinh, Bai_Tap1, …
Các tên không hợp lệ: 1A, Giai Phuong Trinh, …
Ngôn ngữ C phân biệt chữ hoa chữ thuờng, do đó các tên sau đây có ý nghĩa khác
nhau: BaiTap, baitap, BAITAP…
1.4. Dấu chấm phẩy (;)
Dấu chấm phẩy ; được sử dụng để phân cách các câu lệnh trong C.
Ví dụ:
printf(“Nhập a : ”);
scanf(“%d”, &a);
1.5. Câu chú thích
C cho phép nguời lập trình chèn vào chương trình các câu ghi chú ở bất kỳ vị trí
nào nhằm mục đích làm sáng tỏ thêm cấu trúc của chương trình mà khơng làm ảnh
huởng đến các phần khác. Các câu ghi chú có thể đuợc ghi trên một dòng hoặc trên các
dòng khác nhau miễn là chúng đuợc bao bởi dấu /* ở đầu và dấu */ ở cuối.
Ví dụ:
/* Chương trình giải phương trình bậc nhất ax + b = 0 */
/* Họ và Tên : Nguyễn Văn A
MSSV : 0712001 */
Một số trình biên dịch sau này cho phép sử dụng hai dấu xổ chéo // thay cho việc
dùng /* */ đối với các ghi chú trên 1 dịng.
Ví dụ:
// Chương trình giải phương trình bậc nhất ax + b = 0
16
3. Cấu trúc một chương trình C
Chương trình được viết bằng ngơn ngữ C gồm các phần chính sau đây:
- Phần khai báo chèn các tập tin tiêu đề (header file) vào chương trình. Đây là các
tập tin chứa các định nghĩa cần thiết cho trình biên dịch. Có hai cách để xác định tập tin
theo sau chỉ thị #include: bao tên tập tin bởi cặp dấu < > đối với tập tin thư viện như
stdio.h, conio.h hoặc cặp dấu “ ” đối với các tập tin tiêu đề do người lập trình tạo ra.
- Phần khai báo các biến toàn cục hoặc các hàm được sử dụng trong chương trình.
Thơng thường người ta thường đặt các ngun mẫu hàm (function prototype) ở đây cịn
phần mơ tả hàm được đặt ở dưới cùng.
Phần định nghĩa hàm chính. Hàm này có tên là main và là thành phần duy nhất
luôn phải có trong một chương trình C. Thơng thường chương trình sẽ bắt đầu bằng cách
thực hiện các dòng lệnh trong hàm main này.
Ví dụ:
// Phần khai báo chèn các tập tin tiêu đề
#include <stdio.h>
#include <conio.h>
// Phần khai báo biến toàn cục, nguyên mẫu hàm
int x, y;
void Nhap(int &); // Prototype hàm Nhap
int
TinhTong(int, int); // Protytype ham TinhTong
// Phần định nghĩa hàm main
void main()
{
int x, y, tong;
Nhap(x);
Nhap(y);
tong = TinhTong(x, y);
printf(“Tong cua x va y la %d.”, tong);
}
17
// Phần mô tả các hàm
void Nhap(int &n)
{
printf(“Nhap mot so nguyen: ”);
scanf(“%d”, &n);
}
int TinhTong(int x, int y)
{
return x + y;
}
BÀI TẬP
1. Tên (định danh) nào sau đây đặt không hợp lệ, tại sao?
2.
3.
4.
5.
Tin hoc co SO A, 1BaiTapKHO
THucHaNH, NhapMon_L@pTrinH
Câu ghi chú dùng để làm gì? Cách sử dụng ra sao? Cho ví dụ minh họa.
Trình bày cấu trúc của một chương trình C. Giải thích ý nghĩa của từng phần
trong cấu trúc.
18
CHƯƠNG 2: CÁC KIỂU DỮ LIỆU CƠ SỞ
Mục tiêu
− Trình bày được các kiểu dữ liệu;
− Trình bày và vận dụng đượccác loại biến, hằng biểu thức cho từng chương trình
cụ thể;
− Trình bày và vận dụng được các lệnh nhập xuất;
− Chạy được chương trình trong C;
− Thực hiện các thao tác an tồn với máy tính.
Nội dung
1. Các kiểu dữ liệu cơ sở
Turbo C có 4 kiểu cơ sở như sau:
− Kiểu số nguyên: giá trị của nó là các số nguyên như 2912, -1706, …
− Kiểu số thực: giá trị của nó là các số thực như 3.1415, 29.12, -17.06, …
− Kiểu luận lý: giá trị đúng hoặc sai.
− Kiểu ký tự: 256 ký tự trong bảng mã ASCII.
1.1. Kiểu số nguyên - int
Ðây là các kiểu dữ liệu mà giá trị của nó là số nguyên. Dữ liệu kiểu số nguyên
lại chia ra thành hai loại như sau:
- Các số nguyên có dấu (signed) để chứa các số nguyên âm hoặc dương.
Kiểu
(Type)
char
int
short
long
Độ lớn
(Byte)
1
2
2
4
Miền giá trị
(Range)
-128 ... 127
32.768 ... 32.768
-32.768 ... 32.768
-2.147.483.648 ... 2.147.483.647
- Các số nguyên không dấu (unsigned) chứa các số nguyên dương (kể cả số 0).
Kiểu
(Type)
unsigned char
unsigned int
unsigned short
unsigned long
Độ lớn
(Byte)
1
2
2
4
Miền giá trị
(Range)
0 ... 255
0 ... 65.535
0 ... 65.535
0 ... 4.294.967.295
1.2. Kiểu số thực - float
Ðây là các kiểu dữ liệu mà giá trị của nó là số thực. Trong C định nghĩa các kiểu
số thực chuẩn như sau:
19
Kiểu
Độ lớn
Miền giá trị
(Type)
float
(Byte)
4
(Range)
3.4*10-38 ... 3.4*1038
double
8
1.7*10-308 ... 1.7*10308
(*) Độ chính xác đơn (Single-precision) chính xác đến 7 số lẻ.
(**) Độ chính xác kép (Double-precision) chính xác đến 19 số lẻ.
1.3. Kiểu luận lý
Đặc điểm
- Trong C không hỗ trợ kiểu luận lý tuờng minh mà chỉ ngầm hiểu một cách
không tường minh như sau:
• false (sai) là giá trị 0.
• true (đúng) là giá trị khác 0, thường là 1.
- C++: bool
Ví dụ
- 0 (false), 1 (true), 2 (true), 2.5 (true)
- 1 > 2 (0, false), 1 < 2 (1, true)
1.4. Kiểu ký tự - char
Ðây chính là kiểu dữ liệu số nguyên char có độ lớn 1 byte và miền giá trị là 256
ký tự trong bảng mã ASCII.
Đặc điểm
- Tên kiểu: char
- Miền giá trị: 256 ký tự trong bảng mã ASCII.
- Chính là kiểu số ngun do:
• Lưu tất cả dữ liệu ở dạng số.
• Khơng lưu trực tiếp ký tự mà chỉ lưu mã ASCII của ký tự đó.
Ví dụ
- Lưu số 65 tương đương với ký tự ‘A’…
- Lưu số 97 tương đương với ký tự ‘a’.
2. Biến, hằng, câu lệnh và biểu thức
2.1. Hằng ký tự và hằng chuỗi
Hằng số cũng giống như biến nhưng nội dung của nó khơng thể thay đổi trong
q trình thực hiện chương trình. Trong C, ta có hai kiểu hằng số, đó là hằng thường
(literal constant) và hằng ký hiệu (symbol constant).
2.1.1. Hằng thường
Cách khai báo hằng này thường được dùng để khởi tạo giá trị cho biến.
Cú pháp khai báo hằng thường