Ngôn Ngữ Lập Trình C/C++
Chương 1: Giới Thiệu C/C++.
1. 1. Lịch sữ C/C++.
-Những năm cuối thập kỷ 60 đầu năm 1970, xuất hiện yêu cầu cần có ngôn ngữ bậc cao để hỗ trợ các nhà tin học trong việc xây dựng phần mềm hệ thống, hệ điều hành và do đó đã ra đời ngôn ngữ C tại phòng thí nghiệm điện thoại Bell Labs (Mỹ) để viết hệ điều hành Unix cho máy tính mini PDP11 của công ty DEC (Mỹ) và trở nên rất quen thuộc với các chuyên gia tin học .
-Vào những năm 1980 , Bjourn Stroustrup, làm việc tại công ty Điện báo và Điện thoại (AT&T- American Telephone & Telegraph) đã bổ sung các đặc tính mới "hướng đối tượng" cho ngôn ngữ C. Các khái niệm về lập trình hướng đối tượng đã có trước đó trong các ngôn ngữ lập trình khác như Smalltalk, nhưng C++ là ngôn ngữ lập trình hướng đối tượng mạnh.
1.2. Chương tình máy tính là gì?
- Chương trình máy tính là dãy các lệnh cho máy tính biết cần phải thực hiện.
- C/C++ là ngôn ngữ lập trình máy tính giúp chúng ta xây dựng chương trình để máy tính thực hiện đúng các công việc mà ta yêu cầu.
- Để cung cấp các lệnh cho máy tính bằng ngôn ngữ lập trình C/C++ chúng ta có chương trình soạn thảo (Editor) và chương trình dịch (C++ compiler).
Các bước xây dựng chương trình máy tính bằng C/C++.
1. Xác định vấn đề cần giải quyêt bằng máy tính.
2. Định nghĩa đầu ra chương trình.
3. Chia nhỏ vấn đề thành các bước logic.
4. Viết chương trình.
5. Dịch chương trình.
6. Kiểm tra thử nghiệm chương trình.
- Các lệnh trong chương trình C/C++ được gọi là mã nguồn. Sau khi nhập mã nguồn ta có thể ghi lên đĩa từ dưới dạng tệp trước khi dịch và chạy chúng. Các tên tệp mã nguồn có phần mở rộng là .C cho ngôn ngữ C và .CPP cho ngôn ngữ C++.
- Sau khi nhập mã chương trình ta phải dịch chương trình. Nếu có thông báo lỗi trên màng hình thì phải trở lại trinh soạn thảo mã nguồn để sửa lỗi.
- Trước tiên tìm hiểu kỹ về C/C++ ta hãy làm quen với trình soạn thảo mã nguồn và trình biên dịch C++ của Broland thông qua ví dụ sau đây.
ví dụ: Chương trình sau được viết bằng ngôn ngữ C.
1.3. Cấu trúc chương trình C/C++.
- Để thấy rõ được cấu trúc chương trình của C/C++ chúng ta sẽ xét một số ví dụ trên dòng ngôn ngữ C, sau đó sẽ xem xét viết trên C++.
1.3.1. Một số chương trình ví dụ.
ví dụ 1: Lập chương trình sắp xếp một dãy số n thực a1,a2,.....an theo thứ tự tăng dần.
- Đây là bài toán ứng dụng nhiều trong thực tế như: sắp xếp kết quả thi, bảng kết quả học tập, sắp xếp danh sách cán bộ của một đơn vị theo tuổi ......
Thuật toán:
1) Nhập số n và dãy số a1,a2,.....an vào mảng a[1], a[2],.....a[n];
2) for i->1 to n-1 do
3) for j->1 to n do
Kiểm tra điều kiện: nếu a[i] >a[j] thì đổi giá trị a[i], a[j] cho nhau;
4) In ra dãy số a[i], a[j],....a[n];
5) Kết thúc chương trình.
chương trình như sau:
#include <stdio.h>
#include <conio.h>
define Nmax 50
short i,j,n;
float tg, A[Nmax];
void main ()
{
clrscr();
printf ("Nhập n="); scanf( "%d",&n);
for (i=1;i<=n;i++)
{
printf("Nhap so thu %d",i)
scanf( "%f", &A[i]);
}
printf ("\n")
for (i=1;1<=n-1;i++)
for (j=i+1;j<=n;j++)
if (A[i]>A[j])
{
tg=A[i];
A[i]=A[j];
A[i]=tg;
}
printf("Day so da duoc sap xep la \n\n");
for (i=1;i<n;i++) printf("%4.1f",A[i]);
Printf("\n");
getch();
}
Nhảy chương.!
Chương 3: Sử dụng các lệnh của C/C++
3.1. Các vòng lặp while, Do-while, For
Trong lập trình giải các bài toán thực tế, chúng ta luôn gặp phải cấu trúc lặp để thực hiện một công việc nào đó lặp đi lặp lại theo một quy luật nào đó. Ví dụ: trong bài toán quản lý cán bộ, để nhập dữ liệu vào danh sách gồm n người thì công việc lặp đi lặp lại chính là: nhập thông tin của một cán bộ (gồm họ tên, ngày sinh, giới tín, chức vụ, lương...) n lần vào máy tính.
Trong nhiều trường hợp, số lần lặp có thể không biết trước mà chỉ biết điều kiện để dừng lặp lại. Ví dụ bài toán nhập thông tin về một cán bộ nào đó trong một cơ quan cho đến khi nhấn phím ESCAPE thì dừng nhập.
Trong các ngôn ngữ lập trình, cấu trúc lặp thực hiện lặp đi, lặp lại nhiều lần một câu lệnh hay một khối câu lệnh nào đó (chính là khối công việc trong các bài toán thực tế).
Trong C/C++ một dãy các lệnh đặt trong cặp dấu {và} được gọi là một khối lệnh và có thể coi khối lệnh này như là một câu lệnh riêng lẻ ( tương tự như lệnh ghép trong ngôn ngữ Pascal)
3.1.1. Câu lệnh while.
Đây là câu lệnh lặp số lần không xác định có kiểm tra điều kiện trước khi thực hiện vòng lặp.
Cú pháp: while (<biểu thức điều kiện>)
<câu lệnh>;
Trình tự thực hiện:
1. Chương trình sẽ tính toán giá trị <biểu thức điều kiện>
2. Nếu biểu thức điều kiện cho giá trị đúng thì chương trình sẽ thực hiện <câu lệnh>, nếu biểu thức điều kiện cho lại giá trị sai thì kết thúc câu lệnh while.
3. Quay về bước 1
Nếu ngay lần tính đầu tiên giá trị biểu thức điều kiện cho lại là sai thì phần câu lệnh sẽ không bao giờ được thực hiện.
Các vòng lặp while có thể lồng nhau theo cú pháp sau:
while (biểu thức điều kiện 1)
{
câu lệnh....
while (biểu thức điều kiện 2
{
câu lệnh....
}
câu lệnh....
}
ví dụ 1: Hãy viết chương trình để in ra 10 hàng chữ cho biên số thứ tự của hàng:
#include<stdio.h>
#include<conio.h>
int i=0;
main()
{
clrscr();
printf (''\n Theo chieu tang '');
while (i<10)
{
printf(''\n Hang thu %2d=%2d'', i+1,i);
++i;
}
getch();
}
Ví dụ 2 : Viết chương trình tạo mật khẩu, chỉ khi nào gõ đúng mật khẩu thì mới thoát khỏi vòng lặp để thực hiện câu lệnh khác. Trong ví dụ này mật khẩu là m.
#include<stdio.h>
#include<conio.h>
main()
{
char mk;
clrscr ();
printf(''\n cho biet mat khau:'');
scanf(''%s'', &mk);
while (mk!='m')
{
printf(''\n cho biet mat khau:'');
scanf(''%s'', &mk);
}
printf (''Ban da go dung mat khau'');
getch();
}
3.1.2. Câu lệnh do...while.
Là câu lệnh kiểm tra điều kiện sau ( kiểm tra điều kiện sau khi thực hiện vòng lặp ). Cấu trúc này thực hiện khối lệnh cho đến khi biểu thức có giá trị bằng 0.
Cú pháp:
do
{
<câu lệnh>;
}
while (<biểu thưc điều kiện>)
thực hiện:
1. Chương trình sẽ thực hiện khối câu lệnh sau lệnh do.
2. Kiểm tra giá trị biểu thức điều kiện của lệnh while, nếu giá trị biểu thức điều kiện là đúng, chương trình sẽ thực hiện tiếp bước 1, nếu giá trị biểu thức điều kiện là sai, nó sẽ kết thức lệnh do- while.
chú ý;
Khác với lệnh while, lệnh do- while bao giờ cũng cho phép thực hiện khối lệnh sau ít nhất một lần , sau đó nó mới kiểm tra giá trị biểu thức để quyết định có thực hiện khối lệnh đó vòng tiếp theo hay không (kiểm tra điều kiện sau). Còn lệnh while thì kiểm tra giá trị biểu thức điều kiện ngay từ ban đầu trước khi quyết định thực hiện khối câu lệnh (kiểm tra điều kiện trước).
Ví dụ 1: Viết chương trình tính trung bình cộng của n số nguyên nhập vào từ bàn phím. Khi nào bấm số 0 thì kết thúc nhập và tính giá trị trung bình.
#include<stdio.h>
#include<conio.h>
main()
{
int so, tong=0,n=0;
float tb;
clrscr();
do
{
printf(''\n Nhap vao 1 so (so o de dung)'');
scanf (''%d'',&so);
tong+=so;
n+=1;
}
while (so!=0);
n-=1;
tb=tong/n;
printf ("\n Da nhap vao: %d so '',n);
printf(''\n Trung binh cong = %f'',tb);
getch();
}
3.1.3. Câu lệnh for.
Đây là câu lệnh lặp có kiểm tra trước, nên sử dụng khi lập trình viên biết trước được số lần lặp.
Cú pháp :
for(<câu lệnh khởi đầu>;<biểu thức 1>;<biểu thức 2>)
{
<câu lệnh>;
}
Thực hiện:
Bước 1: thực hiện câu lệnh khởi đầu, câu lệnh khởi đầu có thể hoặc là một khai bao biến hay một biểu thức. Nói chung nó được dùng để khởi đầu hay gán giá trị cho một hay một tập các biến nó cũng có thể là câu lệnh rỗng.
Phần câu lệnh khởi đầu có thể có các dạng sau;
for (int i=0;
for (;....//câu lệnh khởi đầu rỗng
for(i=0;.....
for(int
danh sách mã định dạng thông dụng:
%s : Đưa ra dữ liệu dưới dạng kiểu xâu ký tự (đến khi có dấu kết thúc xâu)
%c : Đưa ra dữ liệu dạng ký tự.
%d : Đưa ra dạng ký tự số nguyên.
%u : Đưa ra dữ liệu dạng số nguyên dương.
%f : Đưa ra dữ liệu dạng số float.
%x : Đưa ra dạng dữ liệu dạng số cơ số 16 (số Hexa)
%%: Đưa ra dấu %.
1. 1. Lịch sữ C/C++.
-Những năm cuối thập kỷ 60 đầu năm 1970, xuất hiện yêu cầu cần có ngôn ngữ bậc cao để hỗ trợ các nhà tin học trong việc xây dựng phần mềm hệ thống, hệ điều hành và do đó đã ra đời ngôn ngữ C tại phòng thí nghiệm điện thoại Bell Labs (Mỹ) để viết hệ điều hành Unix cho máy tính mini PDP11 của công ty DEC (Mỹ) và trở nên rất quen thuộc với các chuyên gia tin học .
-Vào những năm 1980 , Bjourn Stroustrup, làm việc tại công ty Điện báo và Điện thoại (AT&T- American Telephone & Telegraph) đã bổ sung các đặc tính mới "hướng đối tượng" cho ngôn ngữ C. Các khái niệm về lập trình hướng đối tượng đã có trước đó trong các ngôn ngữ lập trình khác như Smalltalk, nhưng C++ là ngôn ngữ lập trình hướng đối tượng mạnh.
1.2. Chương tình máy tính là gì?
- Chương trình máy tính là dãy các lệnh cho máy tính biết cần phải thực hiện.
- C/C++ là ngôn ngữ lập trình máy tính giúp chúng ta xây dựng chương trình để máy tính thực hiện đúng các công việc mà ta yêu cầu.
- Để cung cấp các lệnh cho máy tính bằng ngôn ngữ lập trình C/C++ chúng ta có chương trình soạn thảo (Editor) và chương trình dịch (C++ compiler).
Các bước xây dựng chương trình máy tính bằng C/C++.
1. Xác định vấn đề cần giải quyêt bằng máy tính.
2. Định nghĩa đầu ra chương trình.
3. Chia nhỏ vấn đề thành các bước logic.
4. Viết chương trình.
5. Dịch chương trình.
6. Kiểm tra thử nghiệm chương trình.
- Các lệnh trong chương trình C/C++ được gọi là mã nguồn. Sau khi nhập mã nguồn ta có thể ghi lên đĩa từ dưới dạng tệp trước khi dịch và chạy chúng. Các tên tệp mã nguồn có phần mở rộng là .C cho ngôn ngữ C và .CPP cho ngôn ngữ C++.
- Sau khi nhập mã chương trình ta phải dịch chương trình. Nếu có thông báo lỗi trên màng hình thì phải trở lại trinh soạn thảo mã nguồn để sửa lỗi.
- Trước tiên tìm hiểu kỹ về C/C++ ta hãy làm quen với trình soạn thảo mã nguồn và trình biên dịch C++ của Broland thông qua ví dụ sau đây.
ví dụ: Chương trình sau được viết bằng ngôn ngữ C.
#include <stdio.h>
main ()
{
printf ("xin chao");
}
ví dụ sẽ đưa ra màn hình dòng chữ: xin chao
//Ten tep hello.cpp
//Chuong trinh hien thi dong chu "Hello C++!" trên màn hình
#include <iostream.h>
#include <conio.h>
main ()
{
cout<<"Hello C++!\n";
getch();
return 0;
}
- Sau khi nhập xong mã chương trình, chúng ta nhấn tổ hợp phím (Alt + R) để chạy thử chương trình. Trên màn hình sẽ xuất hiện dòng chữ Hello C++! và chờ nhấn phím bất kỳ để thoát khỏi chương trình.1.3. Cấu trúc chương trình C/C++.
- Để thấy rõ được cấu trúc chương trình của C/C++ chúng ta sẽ xét một số ví dụ trên dòng ngôn ngữ C, sau đó sẽ xem xét viết trên C++.
1.3.1. Một số chương trình ví dụ.
ví dụ 1: Lập chương trình sắp xếp một dãy số n thực a1,a2,.....an theo thứ tự tăng dần.
- Đây là bài toán ứng dụng nhiều trong thực tế như: sắp xếp kết quả thi, bảng kết quả học tập, sắp xếp danh sách cán bộ của một đơn vị theo tuổi ......
Thuật toán:
1) Nhập số n và dãy số a1,a2,.....an vào mảng a[1], a[2],.....a[n];
2) for i->1 to n-1 do
3) for j->1 to n do
Kiểm tra điều kiện: nếu a[i] >a[j] thì đổi giá trị a[i], a[j] cho nhau;
4) In ra dãy số a[i], a[j],....a[n];
5) Kết thúc chương trình.
chương trình như sau:
#include <stdio.h>
#include <conio.h>
define Nmax 50
short i,j,n;
float tg, A[Nmax];
void main ()
{
clrscr();
printf ("Nhập n="); scanf( "%d",&n);
for (i=1;i<=n;i++)
{
printf("Nhap so thu %d",i)
scanf( "%f", &A[i]);
}
printf ("\n")
for (i=1;1<=n-1;i++)
for (j=i+1;j<=n;j++)
if (A[i]>A[j])
{
tg=A[i];
A[i]=A[j];
A[i]=tg;
}
printf("Day so da duoc sap xep la \n\n");
for (i=1;i<n;i++) printf("%4.1f",A[i]);
Printf("\n");
getch();
}
Nhảy chương.!
Chương 3: Sử dụng các lệnh của C/C++
3.1. Các vòng lặp while, Do-while, For
Trong lập trình giải các bài toán thực tế, chúng ta luôn gặp phải cấu trúc lặp để thực hiện một công việc nào đó lặp đi lặp lại theo một quy luật nào đó. Ví dụ: trong bài toán quản lý cán bộ, để nhập dữ liệu vào danh sách gồm n người thì công việc lặp đi lặp lại chính là: nhập thông tin của một cán bộ (gồm họ tên, ngày sinh, giới tín, chức vụ, lương...) n lần vào máy tính.
Trong nhiều trường hợp, số lần lặp có thể không biết trước mà chỉ biết điều kiện để dừng lặp lại. Ví dụ bài toán nhập thông tin về một cán bộ nào đó trong một cơ quan cho đến khi nhấn phím ESCAPE thì dừng nhập.
Trong các ngôn ngữ lập trình, cấu trúc lặp thực hiện lặp đi, lặp lại nhiều lần một câu lệnh hay một khối câu lệnh nào đó (chính là khối công việc trong các bài toán thực tế).
Trong C/C++ một dãy các lệnh đặt trong cặp dấu {và} được gọi là một khối lệnh và có thể coi khối lệnh này như là một câu lệnh riêng lẻ ( tương tự như lệnh ghép trong ngôn ngữ Pascal)
3.1.1. Câu lệnh while.
Đây là câu lệnh lặp số lần không xác định có kiểm tra điều kiện trước khi thực hiện vòng lặp.
Cú pháp: while (<biểu thức điều kiện>)
<câu lệnh>;
Trình tự thực hiện:
1. Chương trình sẽ tính toán giá trị <biểu thức điều kiện>
2. Nếu biểu thức điều kiện cho giá trị đúng thì chương trình sẽ thực hiện <câu lệnh>, nếu biểu thức điều kiện cho lại giá trị sai thì kết thúc câu lệnh while.
3. Quay về bước 1
Nếu ngay lần tính đầu tiên giá trị biểu thức điều kiện cho lại là sai thì phần câu lệnh sẽ không bao giờ được thực hiện.
Các vòng lặp while có thể lồng nhau theo cú pháp sau:
while (biểu thức điều kiện 1)
{
câu lệnh....
while (biểu thức điều kiện 2
{
câu lệnh....
}
câu lệnh....
}
ví dụ 1: Hãy viết chương trình để in ra 10 hàng chữ cho biên số thứ tự của hàng:
#include<stdio.h>
#include<conio.h>
int i=0;
main()
{
clrscr();
printf (''\n Theo chieu tang '');
while (i<10)
{
printf(''\n Hang thu %2d=%2d'', i+1,i);
++i;
}
getch();
}
Ví dụ 2 : Viết chương trình tạo mật khẩu, chỉ khi nào gõ đúng mật khẩu thì mới thoát khỏi vòng lặp để thực hiện câu lệnh khác. Trong ví dụ này mật khẩu là m.
#include<stdio.h>
#include<conio.h>
main()
{
char mk;
clrscr ();
printf(''\n cho biet mat khau:'');
scanf(''%s'', &mk);
while (mk!='m')
{
printf(''\n cho biet mat khau:'');
scanf(''%s'', &mk);
}
printf (''Ban da go dung mat khau'');
getch();
}
3.1.2. Câu lệnh do...while.
Là câu lệnh kiểm tra điều kiện sau ( kiểm tra điều kiện sau khi thực hiện vòng lặp ). Cấu trúc này thực hiện khối lệnh cho đến khi biểu thức có giá trị bằng 0.
Cú pháp:
do
{
<câu lệnh>;
}
while (<biểu thưc điều kiện>)
thực hiện:
1. Chương trình sẽ thực hiện khối câu lệnh sau lệnh do.
2. Kiểm tra giá trị biểu thức điều kiện của lệnh while, nếu giá trị biểu thức điều kiện là đúng, chương trình sẽ thực hiện tiếp bước 1, nếu giá trị biểu thức điều kiện là sai, nó sẽ kết thức lệnh do- while.
chú ý;
Khác với lệnh while, lệnh do- while bao giờ cũng cho phép thực hiện khối lệnh sau ít nhất một lần , sau đó nó mới kiểm tra giá trị biểu thức để quyết định có thực hiện khối lệnh đó vòng tiếp theo hay không (kiểm tra điều kiện sau). Còn lệnh while thì kiểm tra giá trị biểu thức điều kiện ngay từ ban đầu trước khi quyết định thực hiện khối câu lệnh (kiểm tra điều kiện trước).
Ví dụ 1: Viết chương trình tính trung bình cộng của n số nguyên nhập vào từ bàn phím. Khi nào bấm số 0 thì kết thúc nhập và tính giá trị trung bình.
#include<stdio.h>
#include<conio.h>
main()
{
int so, tong=0,n=0;
float tb;
clrscr();
do
{
printf(''\n Nhap vao 1 so (so o de dung)'');
scanf (''%d'',&so);
tong+=so;
n+=1;
}
while (so!=0);
n-=1;
tb=tong/n;
printf ("\n Da nhap vao: %d so '',n);
printf(''\n Trung binh cong = %f'',tb);
getch();
}
3.1.3. Câu lệnh for.
Đây là câu lệnh lặp có kiểm tra trước, nên sử dụng khi lập trình viên biết trước được số lần lặp.
Cú pháp :
for(<câu lệnh khởi đầu>;<biểu thức 1>;<biểu thức 2>)
{
<câu lệnh>;
}
Thực hiện:
Bước 1: thực hiện câu lệnh khởi đầu, câu lệnh khởi đầu có thể hoặc là một khai bao biến hay một biểu thức. Nói chung nó được dùng để khởi đầu hay gán giá trị cho một hay một tập các biến nó cũng có thể là câu lệnh rỗng.
Phần câu lệnh khởi đầu có thể có các dạng sau;
for (int i=0;
for (;....//câu lệnh khởi đầu rỗng
for(i=0;.....
for(int
danh sách mã định dạng thông dụng:
%s : Đưa ra dữ liệu dưới dạng kiểu xâu ký tự (đến khi có dấu kết thúc xâu)
%c : Đưa ra dữ liệu dạng ký tự.
%d : Đưa ra dạng ký tự số nguyên.
%u : Đưa ra dữ liệu dạng số nguyên dương.
%f : Đưa ra dữ liệu dạng số float.
%x : Đưa ra dạng dữ liệu dạng số cơ số 16 (số Hexa)
%%: Đưa ra dấu %.
Nhận xét
Đăng nhận xét