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

Đề cương Ngôn ngữ lập trình C++

64 2,9K 9
Tài liệu đã được kiểm tra trùng lặp

Đ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 64
Dung lượng 391 KB

Nội dung

Ngôn ngữ lập trình C++

Trang 1

Trờng cao đẳng công nghiệp hà nội

-đề cơng chi tiếtmôn học

kỹ thuật lập trình

(Tài liệu giảng dạy)

Biên soạn: ThS Nguyễn Mạnh Cờng

(lu hành nội bộ)

Hà nội – 8/2004

Đề cơng chi tiết Môn học: Kỹ thuật lập trình Tài liệu tham khảo

Trang 2

Chơng I Giới thiệu về ngôn ngữ lập trình C++

1 Môi trờng lập trình C++

Ngôn ngữ lập trình C++ là một sự mở rộng của ngôn ngữ lập trình

C, trong đó, chủ yếu đa thêm vào ngôn ngữ C khả năng lập trình hớng

đối tợng và loại bỏ những phức tạp không cần thiết của ngôn ngữ

Để vào môi trờng soạn thảo chơng trình của C++ ta thực hiện:

+ Cài đặt chơng trình soạn thảo m lệnh C++ vào máy tính.ã lệnh C++ vào máy tính

+ Vào th mục TC30\ BIN, chọn TC.Exe.

Khi đó, môi trờng soạn thảo C++ đã lệnh C++ vào máy tính sẵn sàng

- Các thao tác khi soạn thảo chơng trình:

[1] Mở một file mới: Chọn File\ New hoặc bấm phấm F3 sau đó gõ tên

file vào

[2] Lu file: Chọn File\ Save hoặc bấm phím F2 Nếu file cha đợc đặt tên

bởi ngời lập trình hã lệnh C++ vào máy tính.y đặt tên

[3] Mở một file có sẵn: Chọn File\ Open hoặc bấm phím F3 Chọn file

cần mở và bấm Enter

[4] Soạn thảo chơng trình: Chơng trình đợc soạn thảo trong cửa sổ soạn

thảo Nói chung, khi soạn thảo thờng thực hiện những thao tác sau:

Down phím Home đa con trỏ về đầu dòng, phím End đa con trỏ vềcuối dòng

Giữ Shift và phím mũi tên để bôi đen đoạn cần sao chép

Đa con trỏ tới nơi đặt đoạn sao chép và bấm tổ hợp phím Ctrl + K +

C để dán

chuyển đoạn mã lệnh C++ vào máy tính đợc bôi đen

phím Ctrl + K + K để bỏ bôi đen

Chú ý: Khác với ngôn ngữ Pascal, ngôn ngữ C++ có phân biệt

chữ hoa và chữ thờng.

Để ghi các dòng chú thích, sử dụng dấu // tại đầu dòng hoặc đặt

đoạn chú thích nh sau: /* đoạn chú thích */

[5] Dịch chơng trình: Bấm phím F9 để dịch chơng trình Nếu chơng

trình có lỗi, chơng trình dịch sẽ báo lỗi Chơng trình chỉ thực thi đợc nếukhông có lỗi

Trang 3

[6] Thực thi chơng trình: Bấm tổ hợp phím Ctrl + F9 để thực thi chơng

trình

[7] Đặt đờng dẫn tới các th viện: Trong một chơng trình viết bằng

ngôn ngữ C++ thờng sử dụng các hàm trong các th viện khác nhau.Thông thờng, các th viện đặt trong các th mục TC\INCLUDE hoặc TC\LIB Môi trờng lập trình C++ tự thiết đặt đờng dẫn tới các th viện này.Tuy nhiên, trong trờng hợp đờng dẫn bị thay đổi, ta cần phải thiết đặt lại

B1: Trong Menu chính, chọn Option\ Directories.

B2: Trong Include, đặt đờng dẫn tới các th viện có đuôi h Trong Libraries, đặt đờng dẫn tới các th viện đuôi lib.

2 Các kiểu dữ liệu cơ bản trong C++

Trong C++ có sử dụng một số kiểu dữ liệu cơ bản sau:

a Kiểu số: bao gồm

+ Số nguyên ngắn int: là kiểu dữ liệu có độ dài 2 byte, dùng để khai

báo các biến nguyên có giá trị trong khoảng –32768 -> 32767

+ Số nguyên ngắn không dấu: unsign int: độ dài 2 byte, khai báocác biến nguyên có giá trị từ 0 tới 65535

+ Số nguyên dài long: là kiểu dữ liệu có độ dài 4 byte, dùng khai

báo các biến nguyên có giá trị trong khoảng – 2.147.483.648 ->2.147.483.647

+ Số nguyên dài không dấu: unsign long: độ dài 4 byte, khai báo

các biến có giá trị từ 0 tới 4.294.967.295

+ Số thực (dấu phảy động) float: kích thớc 4 byte khai báo các biến

thực từ 3.4*10-38 -> 3.4*1038

+ Số thực double: kích thớc 8 byte, có phạm vi từ 1.7*10-308 - >1.7*10308

+ Số thực (dấu phảy động, độ chính xác kép) dài: long double: kíchthớc 10 byte, khai báo các biến từ 3.4 * 10-4932 tới 1.1 * 104932

b Kiểu ký tự: bao gồm

+ Kiểu ký tự char: khai báo biến chứa một ký tự.

+ Kiểu con trỏ ký tự char *: tơng đơng với chuỗi ký tự.

3 Biến và cách khai báo biến

Để khai báo biến trong C++ ta dùng cú pháp sau:

<kiểu dữ liệu> <tên biến> <;>

Trong đó:

Trang 4

- <Kiểu dữ liệu>: có thể là một trong các kiểu dữ liệu chuẩn, có thể

Một chơng trình đơn giản trong C++ thờng có cấu trúc nh sau:

//Khai báo các th viện sử dụng trong chơng trình.

- Các câu lệnh #include <tên th viện.h>: khai báo một số th viện sẽ

sử dụng Các th viện này có chứa sẵn các hàm sẽ sử dụng trong

ch-ơng trình Chẳng hạn th viện iostream.h chứa các hàm cout, cin…

- Từ khóa main() để bắt đầu thân chơng trình chính.

Trang 5

- Các ký tự {, } để bắt đầu và kết thúc một khối lệnh trong chơng

trình Các ký tự này tơng tự các từ khóa này Begin và End trongPascal

- clrscr(); là một lời gọi hàm xóa màn hình Hàm nã lệnh C++ vào máy tính.y đã lệnh C++ vào máy tính có sẵn trong

th viện stdio.h Cần lu ý cách gọi hàm không đối, khác với Pascal

- Các lệnh cout, cin có sẵn trong th viện iostream.h cho phép in lên

màn hình câu thông báo và nhận giá trị nhập vào từ bàn phím cho haibiến a, b chúng tơng tự nh lệnh Write và Read trong Pascal

- Lệnh getch() có trong th viện conio.h cho phép dừng màn hình lại

để xem kết quả Màn hình sẽ dừng cho tới khi một phím bất kỳ đợcbấm

- Lệnh return 0; dùng để chỉ ra kết quả trả về của hàm

VD2 Viết chơng trình nhập vào hai số nguyên a, b sau đó in ra

màn hình tổng, hiệu, tích, thơng của hai số nguyên đó

Trang 6

<Nội dung cần xuất>: có thể là Hằng ký tự, Hằng xâu ký tự, Biến,Hàm, phơng thức định dạng.

VD: cout<<”Sin(x) = “;

cout<<Sin(x);

Chú ý: - có thể sử dụng liên tiếp nhiều toán tử xuất trên một dòng

cout

VD: cout<<”Giá trị của a[“<<i<<”] là “<<a[i];

Các lệnh cout, cin chỉ thích hợp cho việc nhập xuất các biến kiểu

số Với các biến kiểu xâu ký tự thì xâu nhập, xuất phải không chứa dấucách

Định dạng dữ liệu trớc khi xuất:

Ta có thể sử dụng một trong 2 cách sau:

cout.precision(int n): chỉ định độ chính xác của giá trị số khi xuất

là n ký tự sau dấu phảy

setw(int n) – tơng tự nh cout.width(int n).

setfill(char ch) – tơng tự nh cout.fill(char ch).

setprecision(int n) – tơng tự nh cout.precision(int n).

Trang 7

Cách dùng: sử dụng các hàm định dạng ngay trên các dòng cout,

trớc khi đa ra giá trị xuất

VD: Với ví dụ trên, ta có thể viết:

Chú ý: có thể dùng liên tiếp nhiều toán tử nhập trên một dòng cin

để nhập giá trị cho nhiều biến

cin>>a>>b>>c;

Bài tập ví dụ: Viết chơng trình nhập vào một số thực x, in ra mànhình giá trị của F(x) = sin2(x) + cos(x) với độ chính xác 2 chữ số sau dấuphảy

Cú pháp: printf(“ chuỗi cần xuất “, <Biến 1>, <Biến 2>…);

Trong đó: “ Chuỗi cần xuất” có thể là:

%d: đại diện cho biến nguyên

%f: đại diện cho biến thực

%c: đại diện cho biến kiểu ký tự (mặc định)

Trang 8

muốn đa ra

VD: Cần đa ra các giá trị của các biến a, b, c kiểu nguyên, ta viết:

printf (“ Giá trị của a b c la %d %d %d, a, b, c);

Lệnh nhập: scanf

Cú pháp: scanf(“chuỗi các đặc tả”, <&Biến 1>, <&biến 2>…);

Trong đó, mỗi biến cần phải có một đặc tả tơng ứng Lệnh scanfnhập giá trị vào các biến thông qua địa chỉ của biến

c Các lệnh nhập xuất trong Conio.h

Lệnh xuất: puts

Cú pháp: puts(p);

Trong đó p là một con trỏ, trỏ tới một ký tự hoặc hằng xâu ký tự.Nếu p là biến chứa 1 ký tự thì p phải có kiểu char *, nếu p là kiểu char thìphải là một mảng kiểu char

Lệnh puts sẽ đa các ký tự đợc con trỏ p trỏ tới lên màn hình

VD:

char * p = “a”;

puts(p);// đa ký tự a ra màn hình char q[100] = “Ha Noi”;

puts(q);// đa Ha Noi ra màn hình.

Lệnh nhập: gets()

Cú pháp: gets(p);

Trong đó, p là biến con trỏ ký tự, nh vậy, p phải có kiểu char * Nếu p là biến kiểu char thì phải là một biến mảng kiểu char (char * phoặc char p[])

Các lệnh gets, puts thích hợp cho việc nhập xuất các biến kiểuxâu ký tự

Trang 9

b Các toán hạng: có thể là hằng, biến hoặc hàm.

VD: Trong biểu thức 3*X+2+sin(x), các toán tử + và * đợc sử dụng.Toán hạng bao gồm: Hằng (3 và 2), biến (X) và hàm (sin(x))

c Thứ tự u tiên các phép toán

Trong một biểu thức có sử dụng nhiều toán tử, thứ tự u tiên cáctoán tử nh sau (theo chiều từ trái qua phải, từ trên xuống dới):

Trang 10

! ++ - - * / % +

-< <= > >= == != && | | VD: ViÕt biÓu thøc to¸n häc sau b»ng ng«n ng÷ C++ (nÕu cÇn) vµ

cho biÕt thø tù thùc hiÖn c¸c phÐp to¸n

5x 6 +2/7 + (6 mod 3)

i + j ++

(i+j)++

Trang 11

Chơng II Các cấu trúc điều khiển trong C++

1 Giới thiệu chung

Một phần rất quan trọng trong một ngôn ngữ lập trình là các cấutrúc điều khiển

Trong Pascal ta đã lệnh C++ vào máy tính làm quen với 3 loại cấu trúc điều khiển: Chọn,

Rẽ nhánh, Lặp Ta sẽ lần lợt xem xét các loại cấu trúc điều khiển đótrong ngôn ngữ C++ Ta tạm thời chia các cấu trúc điều khiển trong C++theo cây thứ bậc sau:

2 Cấu trúc rẽ nhánh

Trong thực tế, khi giải quyết một công việc thờng ta phải lựa chọnnhiều phơng án giải quyết khác nhau Ngời ta thờng biểu diễn vấn đềnày bằng mệnh đề:

- [1] Nếu … thì …;

- [2] Nếu … thì … ngợc lại thì…

Để mô phỏng hai mệnh đề đó, trong ngôn ngữ lập trình C++ đa racấu trúc rẽ nhánh

Cấu trúc rẽ nhánh có hai dạng nh trong sơ đồ khối dới đây

Cấu trúc điều khiển

Cấu trúc

Cấu trúc lặp kiểm tra điều kiện tr ớc

Cấu trúc lặp kiểm tra điều kiện sau

Cấu trúc lặp với số lần lặp xác

định

Cấu trúc lặp với số lần lặp không xác

Trang 12

nếu <biểu thức điều kiện> nhận giá trị đúng, sẽ thực hiện

<Lệnh>, ngợc lại, bỏ qua lệnh if

[2] nếu <biểu thức điều kiện> nhận giá trị đúng, sẽ thực hiện

<Lệnh 1>, ngợc lại, nếu <biểu thức điều kiện> nhận giá trị sai sẽ thựchiện <Lệnh 2>

Chú ý:

- Biểu thức điều kiện đợc đặt giữa hai dấu ngoặc đơn “(“ “)”

- Câu lệnh trớc else có dấu “;”

- <Lệnh 1> và <Lệnh 2> có thể là một khối lệnh Các khối lệnh

đ-ợc đặt trong hai dấu { }

VD: Lập chơng trình nhập vào một số nguyên Kiểm tra tính chẵn

Trang 13

Các lệnh if có thể lồng nhau theo nghĩa: Các câu lệnh bên trongmột mệnh đề if lại có thể là các mệnh đề if Các mệnh đề if lồng nhau t -

ơng đơng với một mệnh đề if mà biểu thức điều kiện của nó là sự kếthợp biểu các biểu thức điều kiện của các mệnh để if lồng nhau theophép và (AND)

Mỗi lệnh if đủ sẽ cho phép lựa chọn 2 khả năng để thực hiện Trong trờng hợp có n khả năng lựa chọn, ta có thể sử dụng n-1 lệnh if đủ

lồng nhau

VD: Viết chơng trình thực hiện việc nhập vào số tiền của khách

hàng phải trả Nếu số tiền từ 300000 tới 400000, khuyến mại 20% Nếu

số tiền từ 400000 trở lên, khuyến mại 30% Các trờng hợp khác không

đợc khuyến mại Tính và in số tiền khuyến mại của khách lên màn hình

VD: Viết chơng trình nhập vào điểm tổng kết và xếp loại đạo đức

của một sinh viên Sau đó tính số tiền học bổng cho sinh viên đó nhsau:

Trang 14

Đoạn trình trên sẽ cho kết quả sai trong trờng hợp sinh viên tổng

kết >=9.0 và đạo đức tốt Lý do là sử dụng hai lệnh if lồng nhau khi các

Trong trờng hợp có quá nhiều khả năng lựa chọn và các khả năng

loại trừ nhau, nếu sử dụng nhiều lệnh if lồng nhau sẽ làm cho chơng

trình phức tạp, khó kiểm soát Vì vậy C++ cung cấp một cấu trúc điềukhiển khác sử dụng trong trờng hợp này, đó là cấu trúc chọn

Cú pháp:

switch (<Biến nguyên>)

{

Trang 15

- Sơ đồ khối:

Chú ý:

Biến = GT1

Biến = GT2

Biến = GTn

Trang 16

- Mỗi từ khoá case chỉ lựa chọn 1 trờng hợp.

- Các câu lệnh <Lệnh 1>, <Lệnh 2>… có thể là một khối lệnh.Sau đó bắt buộc phải có từ khóa <break;>

này, <Lệnh mặc định> sẽ đợc đợc thực hiện sau khi tất cả các

trờng hợp case đều không thỏa mã lệnh C++ vào máy tính.n.

VD1: Viết chơng trình nhập vào một tháng của một năm nào đó In

VD2: Viết chơng trình nhập vào mã lệnh C++ vào máy tính học vị (là một số nguyên) của

một nhân viên In ra học vị tơng ứng với quy định:

Mã lệnh C++ vào máy tính =1: Cử nhân

Mã lệnh C++ vào máy tính =2: Kỹ s

Trang 17

Mã lệnh C++ vào máy tính =3: Thạc sỹ.

Mã lệnh C++ vào máy tính =4: Tiến sỹ

Các mã lệnh C++ vào máy tính khác: Không xếp loại học vị

Chuyển đổi giữa cấu trúc chọn và rẽ nhánh:

Với cấu trúc rẽ nhánh, các biến trong biểu thức điều kiện có thể cókiểu bất kỳ Ngợc lại, với cấu trúc chọn, chỉ lựa chọn các trờng hợp củabiến nguyên Do vậy, việc chuyển đổi từ cấu trúc chọn sang cấu trúc rẽnhánh bao giờ cũng thực hiện đợc, điều ngợc lại không đúng

Để chuyển đổi một cấu trúc rẽ nhánh mà biểu thức điều kiện cócác biến không phải kiểu nguyên sang cấu trúc chọn cần sử dụng thêmmột biến nguyên để mã lệnh C++ vào máy tính hoá các trờng hợp của nó, sau đó ta áp dụngcấu trúc chọn trên biến nguyên này

4 Cấu trúc lặp

a Vòng lặp với số lần lặp xác định

Là vòng lặp mà ngời lập trình luôn biết trớc số lần lặp của lệnh lặp.Trong quá trình lặp, ta thờng sử dụng một biến để kiểm soát số lầnlặp gọi là “Biến chạy”

Trang 18

Biến chạy thờng nhận các giá trị từ cận dới (n1) tới cận trên (n2)

<Biểu thức 1>: thông thờng có có dạng: <Biến chạy> = <Cận dới>

<Biểu thức 2>: thông thờng có dạng: <Biến chạy> <Toán tử sosánh> <cận trên>

<Biểu thức 3>: thông thờng là một biểu thức để tang hoặc giảmbiến chạy

Trong C++, vòng lặp có số lần lặp xác định cũng có nguyên lýhoạt động tơng tự trong Pascal

Kiểm tra BT3

Trang 19

Các cách thoát khỏi vòng lặp for.

- Thoát tự nhiên: Khi <Biểu thức 2> nhận giá trị sai, chơng trình tự

động thoát khỏi vòng for và chuyển tới lệnh tiếp theo

+ Cách 1: sử dụng lệnh break;

Khi gặp lệnh break; trong thân vòng for, chơng trình sẽ lập tứcthoát khỏi vòng lặp for và chuyển tới lệnh tiếp theo bất kể <Biểu thức 2>vẫn nhận giá trị đúng

+ Cách 2: sử dụng lệnh goto

Lệnh goto có dạng: goto <Nhã lệnh C++ vào máy tính.n> Trong đó,<Nhã lệnh C++ vào máy tính.n> có dạng:

<Tên nh n> <:>ã lệnh C++ vào máy tính

<Tên nhã lệnh C++ vào máy tính.n> tuỳ ý đặt theo quy ớc đặt tên trong C

Khi gặp lệnh goto <Nhã lệnh C++ vào máy tính.n>, chơng trình sẽ nhảy tới vị trí đặt nhã lệnh C++ vào máy tính.n.Nếu nhã lệnh C++ vào máy tính.n đặt ngoài vòng for, chơng trình sẽ thoát khỏi vòng for

Cần chú ý trong trờng hợp 2 lệnh for lồng nhau, khi đó lệnh breakchỉ làm cho chơng trình thoát khỏi vòng for gần nhất chứa lệnh break

Do vậy, để thoát khỏi cả 2 vòng for lồng nhau, ta sử dụng lệnh goto

Trang 20

VD2: xÐt vÝ dô 1 trong trêng hîp thiÕu biÓu thøc 1 vµ/ hoÆc biÓuthøc 2.

C¸ch 3: ViÕt thiÕu <BiÓu thøc 2> vµ <BiÓu thøc 3> sö dông

Trang 21

VD2: Cho dã lệnh C++ vào máy tính.y số nguyên x[] = { 1, 4, 5, 7, 3, 2} Viết chơng trình

đảo ngợc dã lệnh C++ vào máy tính.y số trên và in kết quả lên màn hình

Để giải quyết bài toán trên, có thể có nhiều cách Cách giải sauminh hoạ cách viết khác của các biểu thức trong cú pháp vòng for

#include "conio.h"

#include "iostream.h"

#include "stdio.h"

void main() {

getch();

}

Nhận xét: Các biểu thức 1, 2, 3 trong cú pháp của vòng for có thể

bao gồm một dã lệnh C++ vào máy tính.y các biểu thức con, cách nhay bởi dấu phảy Khi đó, sự

đúng/ sai của biểu thức “mẹ” là sự đúng/ sai của biểu thức con đầu tiêntrong dã lệnh C++ vào máy tính.y Nh vậy vòng for trên có thể viết nh sau:

void main() {

Trang 22

Lặp kiểm tra điều kiện tr ớc: Trớc tiên, kiểm tra biểu thức điều

kiện Nếu biểu thức điều kiện còn đúng, sẽ thực hiện lệnh lặp Nếu biểuthức điều kiện sai, ra khỏi vòng lặp

B1: Kiểm tra biểu thức điều kiện Nếu biểu thức điều kiện sai, thoát

ra khỏi vòng lặp Nếu biểu thức điều kiện đúng, chuyển qua bớc 2

B2: Thực hiện <Lệnh lặp> Quay lại B1.

VD2: Viết chơng trình nhập vào điểm đạo đức của một học sinh

(thang điểm 100, nguyên) và số ngày đi học muộn của học sinh đó Nếuhọc sinh đi học muộn 1 ngày, trừ 1 điểm Tính và in số điểm còn lại củahọc sinh

#include <conio.h>

BTĐK

đúng?

Thực hiện lệnh lặpY

N

Trang 23

Lặp kiểm tra điều kiện sau: Tơng tự nh vòng lặp kiểm tra điều

kiện trớc, chỉ khác ở chỗ biểu thức điều kiện đợc kiểm tra mỗi khi đã lệnh C++ vào máy tính.thực hiện lệnh lặp Nh vậy, lệnh lặp luôn đợc thực hiện ít nhất một lần

B2: Kiểm tra <Biểu thức điều kiện> Nếu <Biểu thức điều kiện

đúng, quay lại B1 Ngợc lại, thoát khỏi vòng lặp

Chú ý:

- <Lệnh lặp> có thể là một khối lệnh

- <Biểu thức điều kiện> phải đợc đặt trong dấu “(“ “)”;

VD1: Viết chơng trình tìm số nguyên x đầu tiên lớn hơn 5 mà thỏa

mã lệnh C++ vào máy tính.n sin(x) = 1

BTĐK

đúng?

Thực hiện lệnh lặp

YN

Trang 24

VD2: Viết chơng trình nhập vào một số nguyên x Kiểm tra xem số

đó đã lệnh C++ vào máy tính lớn hơn 10 hay cha Nếu cha, yêu cầu nhập lại cho tới khi số nhậpvào lớn hơn 10 Kiểm tra xem số đó có phải là số nguyên tố không, inkết luận lên màn hình

Trang 25

Để thoát khỏi vòng lặp không xác định, ta cũng có thể sử dụngbreak hoăck goto Tuy nhiên, các trờng hợp này ít xảy ra do đặc thù củavòng lặp.

Chuyển đổi giữa các cấu trúc lặp:

Từ vòng lặp xác định (for), ta có thể chuyển sang vòng lặp khôngxác định (while hoặc do/ while) bằng cách sử dụng thêm một biến đếmkiểu nguyên trong thân vòng lặp không xác định Trớc khi lặp ta khởigán giá trị của biến đếm này bằng 0 Mỗi khi thực hiện một lần lặp, tatăng giá trị của biến đếm này lên 1

Để chuyển đổi ngợc lại (từ cấu trúc lặp không xác định sang cấutrúc lặp xác định) thì nói chung, ta phải sử dụng các vòng for khuyếtbiểu thức 2, dới dạng:

for (<Biểu thức 1> ; ; <biểu thức 3>)

bởi vì ta không biết chắc số lần lặp của cấu trúc Khi đó bắt buộcphải sử dụng lệnh break và goto trong thân vòng for để thoát cỡng bức

5 Các ví dụ minh họa

VD1: Viết chơng trình nhập vào một số nguyên n, sau đó tính tổng

các số nguyên tố thuộc đoạn [1 n] Cho biết có bao nhiêu số nguyên tốthuộc đoạn trên?

Tong +=i;

Dem++;

} }

cout<<”Tổng các số nguyên tố “<<Tong;

cout<<” Có “<<Dem<<số nguyên tố trong đoạn 1 n”;

getch();

}

VD2: Viết chơng trình nhập vào một số nguyên n và một số thực x,

sau đó tính giá trị biểu thức:

Trang 26

0

chẵn n Nếu 3

x 3

x 3

x

n 2

3 2

cout<<”Giá trị của biểu thức “<<F;

Khi viết một chơng trình, chúng ta có thể triển khai theo hai cách:

Cách 1: Toàn bộ các lệnh của chơng trình đợc viết trong hàm

main Các lệnh đợc viết theo trình tự để giải quyết bài toán đặt ra

Cách 2: Chơng trình đợc tạo thành từ nhiều đơn thể khác nhau.

Các đơn thể thực hiện những nhiệm vụ tơng đối độc lập và đợc “lắpghép” lại thành chơng trình thông qua những lời gọi đơn thể trong hàmmain

u nhợc điểm:

nhỏ Toàn bộ thuật toán đợc thể hiện trong một đoạn mã lệnh C++ vào máy tính từ trênxuống dới Tuy nhiên, cách này không phù hợp với các chơng trìnhlớn do:

+ Kích thớc chơng trình cồng kềnh, khó kiểm soát, chỉnh sửa.

Trang 27

+ Các đoạn m có thể lặp đi lặp lại, chã lệnh C++ vào máy tính ơng trình dài không cần thiết.

đợc hai nhợc điểm cơ bản trên Đặc biệt phù hợp với các chơng trình

có kích thớc lớn

Trong C++, ta có hai loại đơn thể sau:

[1] Các lớp đối tợng: Chơng trình bao gồm một số đoạn mã lệnh C++ vào máy tính mô tả

các lớp các đối tợng nào đó sẽ sử dụng trong chơng trình chính Loại

đơn thể này đợc nghiên cứu trong nội dung môn học “Lập trình hớng đốitợng”

[2] Các hàm: Chơng trình đợc cấu tạo từ các hàm Mỗi hàm thực

thi một nhiệm vụ tơng đối độc lập, trong đó có một hàm main đóng vaitrò nh chơng trình chính để sử dụng các hàm khác

Trong phạm vi môn học, ta chỉ xem xét các đơn thể dới dạng cáchàm

2 Các đặc trng của hàm

Một hàm trong C++ có các đặc trng sau:

- Tên hàm: do ngời lập trình tự đặt và có những đặc điểm sau:

+ Tên hàm thờng mang tính đại diện cho công việc mà hàm sẽ

đảm nhiệm

+ Tên hàm không đợc chứa dấu cách và các ký tự đặc biệt (trừdấu gạch dới)

- Kiểu giá trị trả về của hàm: Nếu hàm trả về một giá trị nào đó thì

giá trị đó phải thuộc một kiểu dữ liệu nào đó mà ta gọi là kiểu giá trịtrả về của hàm Kiểu giá trị trả về của hàm có thể là các kiểu dữ liệuchuẩn

- Kiểu và tên các đối của hàm: Nếu hàm sử dụng các đối thì các

đối phải thuộc một kiểu dữ liệu nào đó Khi thiết lập một hàm, ta cầnchỉ ra danh sách các đối của hàm và kiểu dữ liệu của mỗi đối

- Thân hàm: là nội dung chính của hàm, chứa toàn bộ các lệnh của

hàm

3 Phân loại hàm

Trong pascal, ta có hai loại chơng trình con: thủ tục (procedure) vàhàm (function) Trong C++, chúng ta có duy nhất một loại “chơng trìnhcon” (mà ta gọi là đơn thể), đó là hàm

Một chơng trình trong C++ đợc cấu tạo từ các hàm, trong đó hàmmain là hàm bắt buộc phải có, đóng vai trò nh chơng trình chính

Khác với trong Pascal, tất cả các hàm đều trả về một giá trị nào

Trang 28

- Hàm không có giá trị trả về: Là hàm chỉ có chức năng thực hiện

một công việc nào đó mà ta không quan tâm tới giá trị trả về củahàm

- Hàm có giá trị trả về: Ngoài việc thực hiện một công việc nào đó,

ta còn quan tâm tới giá trị thu đợc sau khi hàm thực thi để dùng trongnhững đoạn trình tiếp theo

Tùy theo nguồn gốc của hàm ngời ta phân ra:

- Các hàm có sẵn: Là các hàm chứa trong các th viện của C++, đã lệnh C++ vào máy tính.

đợc định nghĩa từ trớc Ngời lập trình chỉ việc sử dụng thông qua cácchỉ thị: #include <Tên th viện chứa hàm>

- Các hàm tự định nghĩa: Là các hàm do ngời lập trình tự định nghĩa.

Các hàm này cũng có thể đợc tập hợp lại trong một file h để dùng

nh một th viện có sẵn

II Định nghĩa và sử dụng hàm

1 Định nghĩa hàm

a Cấu trúc một hàm:

Một hàm thờng có cấu trúc nh sau:

<Kiểu hàm> <Tên hàm> <([kiểu đối] [tên đối])>

- <([kiểu đối] [tên đối])>: liệt kê danh sách các đối của hàm và

kiểu dữ liệu của đối (nếu có)

VD1: hàm tính n! đợc viết nh sau:

long GT(int n) {

long kq=1;

if (n==0 | | n==1) kq=1;

else for (int i=1; i<=n; i++)

kq *=i;

return kq;

}

Chú ý:

Trang 29

- Mỗi đối cần đi kèm với kiểu đối, mỗi cặp [kiểu đối] [tên đối] cáchnhau bởi dấu phảy.

- Nếu hàm có giá trị trả về thì cần có câu lệnh <return Biểu_thức>

để gán giá trị của Biểu_Thức cho tên hàm Tuyệt đối không đợc gán

Chơng trình ngoài hàm main còn có các hàm khác thì đợc viếttheo cấu trúc sau:

Thân hàm main;

} Hoặc:

Trang 30

void main() {

}

<Kiểu hàm> <Tên Hàm 2> <([kiểu đối] [Danh sách các

đối]>

{ Thân hàm 2;

}

….

VD1: Viết chơng trình kiểm tra một số nguyên n có phải là số

nguyên tố không, nếu n là số nguyên tố, hã lệnh C++ vào máy tính.y tính n!

Trang 31

cout<<”Số “<<a<<” là số nguyên tố”;

cout<<” Giai thừa của “<<a<<” là “<<GT(a);

B2: Viết hàm main() trong một tệp riêng Để hàm main() có thể sửdụng các hàm viết trong file th viện đã lệnh C++ vào máy tính tạo trong B1, cần thêm chỉ thị:

#include <[ đờng dẫn] <Tên th viện.h>

Chú ý: nếu đặt th viện trên trong th mục TC\ Include thì trong chỉ

thị #include không cần thêm đờng dẫn Ngợc lại, cần thêm đầy đủ đờngdẫn tới file th viện nói trên

VD: Tạo file h với nội dụng sau, VD file “TV.h”:

Trang 32

int a;

cout<<”Nhập a”;

cin>>a;

if (NT(a) == 0) cout<<”Số “<<a<<” Không phải nguyên tố”;

else

{

cout<<”Số “<<a<<” là số nguyên tố”;

cout<<” Giai thừa của “<<a<<” là

“<<GT(a);

} getch();

đầy đủ các tham số cho hàm

kèm tên hàm: <Tên hàm> <()>

Ngợc lại, nếu hàm không có giá trị trả về, tên hàm đợc sử dụng nhmột lệnh

3 Phạm vi của biến

Theo phạm vi hoạt động của biến, ta chia ra:

- Biến toàn cục:

Phạm vi hoạt động trong toàn bộ chơng trình, kể từ vị trí khai báo biến

Ngày đăng: 24/10/2012, 17:12

HÌNH ẢNH LIÊN QUAN

Sơ đồ khối: - Đề cương Ngôn ngữ lập trình C++
Sơ đồ kh ối: (Trang 20)

TỪ KHÓA LIÊN QUAN

w