Lập chương trình cho máy tính

Chia sẻ bởi Nguyễn Việt Vương | Ngày 29/04/2019 | 205

Chia sẻ tài liệu: Lập chương trình cho máy tính thuộc Bài giảng khác

Nội dung tài liệu:

Lập chương trình cho máy tính
Ngôn ngữ lập trình C - Giới thiệu


Lê Hà Thanh
Học kỳ 2, 2004-2005
Tài liệu tham khảo
Bài giảng: Kỹ thuật lập trình. Lưu Nguyễn Kỳ Thư, Tân Hạnh. Khoa CNTT2, Học viện CNBCVT.
Ngôn Ngữ Lập Trình C. Quách Tuấn Ngọc. Nhà Xuất Bản Giáo Dục, 1998.
Efficient C programming. Mark Allen Weiss. Prentice Hall, 1998.
Introduction to Computing System, from Bits and Gates to C and Beoynd. Yale N. Patt, Sanjay J. Patel. McGrawHill, 1999.

Một số khái niệm
Computer program –chương trình máy tính là một tập các câu lệnh (instruction) hướng dẫn máy tính làm một số việc nhất định.
Programming language - Ngôn ngữ lập trình là ngôn ngữ để viết chương trình. Có nhiều loại ngôn ngữ lập trình.
Compiler – trình biên dịch, là phần mềm chịu trách nhiệm dịch chương trình viết bằng một ngôn ngữ lập trình sang dạng mã máy.
MACHINE CODE
ASSEMBLER LANGUAGES

HIGH-LEVEL
LANGUAGES
ForTran, COBOL, C, C++,
LISP, Pascal, Java, ...
4GLs
ORACLE, SEQUEL, INGRES, ...
5GLs
artificial intelligence
Các lớp Ngôn ngữ lập trình
Thuật toán - Algorithm
Tập các lệnh được tổ chức có thứ tự nhằm giải quyết một bài toán hoặc đạt đến một mục tiêu nào đó.
Ví dụ:
hướng dẫn chế biến một món ăn,
hướng dẫn sửa chữa xe máy,
cách giải một bài toán.

Algorithm –Thuật toán - Thuật giải
Thuật giải tốt
Một thuật giải tốt là thuật giải:
chính xác
rõ ràng
đúng
hiệu quả
và có thể bảo trì được.

Chúng ta có thể viết một thuật giải cho máy tính bằng ngôn ngữ bình thường nhưng có thể không rõ ràng. Thay vào đó, chúng ta sẽ dùng ngôn ngữ lập trình (hoặc một ngôn ngữ giả lập ngôn ngữ lập trình gọi là mã giả pseudocode)
Tính điểm trung bình môn học
Nhập: điểm thực hành Vật Lý, điểm bài tập, điểm bài kiểm tra giữa học kỳ, điểm bài kiểm tra cuối học kỳ.
Điểm hệ số
Thực hành : 8 2
bài tập: 9 2
KT giữa kỳ: 8 4
KT cuối kỳ: 8 6

Tổng cộng: TONG = 8*2 + 9*2 + 8*4 + 8*6
Điểm trung bình: TB = TONG/(2+2+4+6)
Sơ đồ xử lý
Sử dụng sơ đồ xử lý để minh họa quá trình xử lý một chương trình.
start,stop
condition expression
process
data
flow
Bài tập: dùng sơ đồ để biểu diễn bài toán nhập và tính điểm trung bình.
Ngôn ngữ lập trình C
có thể đọc và viết mã chương trình trên hầu hết các hệ thống.
chuyển lên C++ và có thể viết các kịch bản CGI (CGI script) cho các Website.
C là ngôn ngữ biên dịch (complied language).

Viết chương trình bằng ngôn ngữ C bằng các chương trình soạn thảo (Notepad, copy con, các công cụ viết chương trình)
Không dùng các chương trình soạn thảo văn bản (vd:Word, WordPad)
Hello
C
Compiler
Lập chương trình cho máy tính
Ngôn ngữ lập trình C – Khái niệm cơ sở
Biến, Hằng, Toán tử, Kiểu dữ liệu cơ sở, Các phép toán và Các từ khóa


Lê Hà Thanh
Học kỳ 2, 2004-2005
Chương trình C đầu tiên
#include

int main()
{
printf(“Hello ");
return 0;
}

Chương trình C
#include
khai báo sử dụng thư viện xuất/nhập chuẩn (standard I/O library). Các thư viện khác: string, time, math…
int main()
khai báo hàm main(). Chương trình C phải khai báo (duy nhất) một hàm main(). Khi chạy, chương trình sẽ bắt đầu thực thi ở câu lệnh đầu tiên trong hàm main().
{ … }
mở và đóng một khối mã.
printf
hàm printf() gửi kết xuất ra thiết bị xuất chuẩn (màn hình). Phần nằm giữa “…“ gọi là chuỗi định dạng kết xuất (format string)
return 0;
ngừng chương trình. Mã lỗi 0 (error code 0) – không có lỗi khi chạy chương trình.
Mở rộng 1
#include

int main()
{
int a, b, c;
a = 5;
b = 7;
c = a + b;
printf(“%d + %d = %d “, a, b, c);
return 0;
}

Biến (variable)
dùng để giữ các giá trị.
Khai báo: ;

vd: int b;

Gán giá trị vào biến:
= ;

vd: b = 5;

Sử dụng biến:

printf(“%d + %d = %d “, a, b, c);
Mở rộng 2
#include

int main()
{
int a, b, c;
printf(“Nhap so thu nhat: “);
scanf(“%d”, &a);
printf(“Nhap so thu hai: “);
scanf(“%d”, &b);
c = a + b;
printf(“%d + %d = %d “, a, b, c);
return 0;
}
Nhap so thu nhat:
Nhap so thu hai:
5 + 7 = 12
5
7
5
7
12
a
b
c
C:> tong.exe
C:>_
Chú ý
C phân biệt chữ hoa/chữ thường do đó phải viết đúng tên lệnh.
vd: printf chứ không phải là Printf, pRintf, PRINTF.

Trong câu lệnh scanf() để lấy giá trị vào biến, phải luôn dùng dấu & trước tên biến.

Khi gọi các hàm phải khai báo các tham số đúng vị trí và đầy đủ.

Phải khai báo biến trước khi sử dụng trong chương trình.
Các Toán tử
Các toán tử so sánh và toán tử logic
Các kiểu dữ liệu cơ bản
Integer: int (các giá trị nguyên 4-byte)
Floating point: float (các giá trị dấu chấm động 4-byte)
Character: char (ký tự 1-byte)
Double: double (dấu chấm động 8-byte)
Short: short (số nguyên 2-byte)
unsigned short (số nguyên không dấu)
unsigned int
Biến và hằng số
Biến số (variable) được dùng để giữ các giá trị và có thể thay đổi các giá trị mà biến đang giữ

Khai báo: varname;
Vd:
int i;
float x, y, z;
char c;

Gán giá trị cho biến: = ;
vd:
i = 4;
x = 5.4;
y = z = 1.2;
Hằng số
Hằng số (constant) giá trị không thay đổi trong quá trình sử dụng.

Khai báo hằng:
#define

vd:
#define TRUE 1
#define FALSE 0

Kiểu và chuyển kiểu (typecasting)
C cho phép chuyển đổi kiểu dữ liệu cơ bản trong khi đang tính toán.
ví dụ:
void main()
{
float a;
int b;
b = 10/3;
a = (float)10/3;
printf(“a = %f b = %d ”, a, b);
}

Chú ý: khi thực hiện chuyển kiểu có thể gây ra mất ý nghĩa dữ liệu
Định nghĩa kiểu (typedef)
Có thể định nghĩa các kiểu riêng bằng lệnh typedef.

vd:
#define TRUE 1
#define FALSE 0
typedef int boolean;

void main() {
boolean b;
b = FALSE;
/*...*/
}
Các phép toán số học
+ - / *
%: phép chia lấy phần dư trong số nguyên. (modulo).
i = i + 1; i++; ++i;
i = i – 1; i--; --i;
i = i + 3; i += 3;
i = i * j; i *= j;

Mở rộng 1
#include

int main()
{
int a, b, c;
a = 5;
b = 7;
c = a + b;
printf(“%d + %d = %d “, a, b, c);
return 0;
}

Lập chương trình cho máy tính
Các cấu trúc điều khiển

Lê Hà Thanh
Học kỳ 2, 2004-2005
Câu lệnh điều kiện if
if ()
{
/* cac lenh thuc hien neu dieu kien dung */
}



expression
statement(s)
Next statement
True
False
Ví dụ
#include

int main() {
int b;

printf("Enter a value:");
scanf("%d", &b);
if (b < 0)
printf("The value
is negative ");
return 0;
}
if … else …
if ()
{
/* cac lenh thuc hien neu dieu kien dung */
}
else
{
/* cac lenh thuc hien neu dieu kien sai */
}



expression
statement1
Next statement
True
False
statement2
Ví dụ

printf(“1/X is: “);
if(X)
printf(“ %f ”, 1/X);
else
printf(“ undefined ”);


Lỗi đơn giản nhưng dễ phạm
#include

int main() {
int b;

printf("Enter a value:");
scanf("%d", &b);
if (b == 5)
printf(“b is "); printf( “5 ”);
return 0;
}
Lỗi đơn giản nhưng dễ phạm
printf(“1/X is: “);
if(X < 0) ;
printf(“ X is negative ”);


Ví dụ: Kiểm tra nhiều điều kiện
#include
int main() {
int b;

printf("Enter a value:");
scanf("%d", &b);
if (b < 0)
printf("The value is negative ");
else if (b == 0)
printf("The value is zero ");
else
printf("The value is positive ");
return 0;
}

Bài tập: Viết chương trình giải phương trình bậc nhất:
ax + b = 0. Biện luận các điều kiện có nghiệm của phương trình.
Điều kiện lồng nhau
Câu lệnh if có thể được lồng vào nhau.
if ( X >= 0 ) {
if ( Y < 0 )
Y = Y + sqrt(X);
}
else
Y = Y + sqrt(-X);

Tuy nhiên, cần chú ý đến thứ tự các cặp lệnh if … else … khi lồng các lệnh if. Nếu không sẽ phát sinh lỗi.
if ( X >= 0 )
if ( Y < 0 )
Y = Y + sqrt(X);
else
Y = Y + sqrt(-X);

Bài tập: Viết chương trình giải phương trình bậc 2:
ax^2 + bx +c = 0. Chú ý các điều kiện có nghiệm.
Lặp - lệnh while
while (bieu thuc dieu kien)
{cac lenh}
Khi biểu thức điều kiện (expression) còn khác 0 (TRUE), lệnh (statement) tiếp tục được thực hiện. Nếu expression bằng 0 (FALSE), lệnh while dừng và chương trình sẽ gọi lệnh kế tiếp sau while.
Nếu lúc đầu expression bằng 0 thì (statement) trong while không bao giờ được gọi thực hiện.
expression
statement(s)
Next statement
True
False
Ví dụ
In bảng đổi nhiệt độ từ độ Fahrenheit (oF) sang độ Celcius (oC).

#include

int main() {
int a = 0;
while (a <= 100) {
printf("%4d degrees F = %4d degrees C ",a, (a - 32)*5/9);
a = a + 10;
}
return 0;
}
Lặp - lệnh for
for (initialization; test; adjustment)
{statement(s)}
Khởi động. Sau đó, nếu điều kiện (test) khác 0: lệnh (statement) được thi hành, lệnh điều chỉnh lại “biến đếm” được gọi thi hành.

test
statement(s)
Next statement
True
False
adjustment
initialization
Ví dụ
Bài toán đổi nhiệt độ. Yêu cầu: hiển thị nhiệt độ chính xác đến con số thập phân sau dấu phẩy.

#include

int main() {
float a = 0;
int i;
for(i=0; i<=100; i+=10) {
printf("%6.2f degrees F = %6.2f degrees C ",
a, (a - 32.0) * 5.0 / 9.0);
a = a + 10;
}
return 0;
}
Lặp - lệnh do while
do
{statement(s)}
while (expression) ;
Thực hiện lệnh (statement). Kiểm tra biểu thức điều kiện (expression). Nếu (expression) bằng 0, dừng. Nếu không, thực hiện (statement).
Lệnh do while thực hiện (statement) ít nhất một lần.

expression
statement(s)
Next statement
True
False
Ví dụ - giao diện chương trình
#include
#include
#define PTB1 1
#define PTB2 2
#define STOP 3

int main()
{
int i;
do {
clrscr(); // xoa man hinh
printf(“ Chuong trinh giai phuong trinh bac thap ”);
printf(“ 1. Giai phuong trinh bac 1: ax + b = 0 ”);
printf(“ 2. Giai phuong trinh bac 2 : ax^2 + bx + c = 0 ”);
printf(“ 3. Thoat chuong trinh ”);
printf(“ Chon muc so (1/2/3) ? “);
scanf(“%d”, &i);
if(i == PTB1)
printf(“Giai phuong trinh bac 1: hien chua co ”);
else if(i == PTB2)
printf(“Giai phuong trinh bac 2: chua cai dat ”);
} while (i != STOP);

return 0;
}

Bài tập: Ghép chương trình trên với hai chương trình trong bài tập 1 và 2
break
dùng để thoát khỏi vòng lặp giữa chừng.

cú pháp:
break;

Thường sử dụng cùng với lệnh if để kiểm tra điều kiện dừng trước khi dùng lệnh break.

Bài tập: Viết chương trình nhập vào một số rồi tìm số nguyên tố đầu tiên lớn hơn số vừa nhập

Tìm số nguyên tố lớn
#include
#define TRUE 1
main(void)
{
unsigned long int Divisor, PossiblePrime;
int FoundPrime;

printf(“Enter the starting number: “);
scanf(“%lu”, &PossiblePrime);
if(PossiblePrime <= 2)
PossiblePrime = 2;
else
if(PossiblePrime !=3 )
{
if(PossiblePrime %2 == 0)
PossiblePrime++; /* Need an odd number */
for( ; ; PossiblePrime += 2)
{
FoundPrime = !TRUE;
for(Divisor = 3;PossiblePrime % Divisor;Divisor += 2)
if(Divisor * Divisor > PossiblePrime)
{ FoundPrime = TRUE;
break;
}
if (FoundPrime)
break;
}
}
printf(“Next largest prime is %lu ”, PossiblePrime);
}
continue
bỏ qua các lệnh kế tiếp trong một vòng lặp và bắt đầu vòng lặp tiếp theo.

cú pháp:
continue;

chỉ áp dụng với lệnh lặp.

Bài tập: Viết chương trình nhập vào một số và tìm ra tất cả các thừa số nguyên tố của số đó.
Tìm thừa số nguyên tố
#include

main(void)
{
unsigned long NumberToFactor, PossibleFactor, UnfactoredPart;

printf(“Enter the number to factor: “);
scanf(“%lu”, &NumberToFactor);

PossibleFactor = 2;
UnfactoredPart = NumberToFactor;

while(PossibleFactor * PossibleFactor <= UnfactoredPart)
{
if(UnfactoredPart % PossibleFactor == 0)
{ /* Found a factor */
printf(“%lu”, PossibleFactor);
UnfactoredPart /= PossibleFactor;
continue;
}
/* No factor: try next factor */
if(PossibleFactor == 2)
PossibleFactor = 3;
else
PossibleFactor += 2;
}
/* print last factor */
printf(“%lu ”, UnfactoredPart);
}
Lệnh switch
Bài tập:
Viết chương trình lấy ngẫu nhiên 1000 số nguyên và đếm số lần xuất hiện ở hàng đơn vị các số chẵn (2, 4, 6, 8), số lẻ (1, 3, 5, 7, 9) và số 0.

Nếu chúng ta dùng cấu trúc lệnh if ... else ... if … thì phức tạp và có thể đòi hỏi nhiều phép thử.
Lý do: if ... else ... : rẽ nhánh hai chiều.

Thử cài đặt bài toán bằng if...else...
Lệnh switch
Dùng lệnh switch để cài đặt cơ chế rẽ nhánh nhiều chiều.
cú pháp:
switch()
{
case case1:
case case2:
;
break;
/* … */
case casen:
;
break;
default:
;
break;
}
Giải bài bằng switch
#include
#include
#include

int main(void)
{ int n;
int n_even = n_odd = n_zero = 0;

randomize();
for(int i=0; i<1000; i++)
{ n = random(1000);
switch (n%10) {
case 2:
case 4:
case 6:
case 8:
n_even++;
break;
case 1:
case 3:
case 5:
case 7:
n_odd++;
break;
case 0:
n_zero++;
break;
}
}
// print out the summary
printf(“Number of even_eding number: %d ”
Number of odd_ending number: %d ”
Number of zero_ending number: %d ”,
n_even, n_odd, n_zero);
return 0;
}
Một số toán tử và lệnh khác
Toán tử ‘,’ được dùng để khởi động nhiều biến trong vòng lặp.
Ví dụ:
for(i = 0, j = 0; i < 5; i++, j += i++)
printf(“i = %d, j = %d, i+j = %d ”, i, j, i+j);

Kết quả là: ????

Toán tử ba ngôi
? :

Ví dụ:
Max = (Y > Z) ? Y : Z;
Một số toán tử và lệnh khác
Lệnh goto cho phép nhảy không điều kiện đến bất kỳ nơi nào trong chương trình.
Cú pháp:
goto
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Nguyễn Việt Vương
Dung lượng: | Lượt tài: 4
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)