Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy

1. Các lệnh vào ra

2. Các lệnh điều khiển

2.1. Lệnh điều kiện,

2.2. Lệnh điều kiện rẽ nhánh,

2.3. Lệnh lặp với số lần xác định,

2.4. Lệnh lặp với số lần không xác định,

2.5. Lệnh ngắt,

2.6. Lệnh tiếp tục

 

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy trang 1

Trang 1

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy trang 2

Trang 2

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy trang 3

Trang 3

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy trang 4

Trang 4

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy trang 5

Trang 5

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy trang 6

Trang 6

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy trang 7

Trang 7

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy trang 8

Trang 8

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy trang 9

Trang 9

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 59 trang xuanhieu 4920
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy

Bài giảng Tin học cơ sở 2 - Chương 2: Các lệnh vào ra và các lệnh điều khiển - Nguyễn Ngọc Duy
 Chương 2
 CÁC LỆNH VÀO RA
VÀ CÁC LỆNH ĐIỀU KHIỂN
 1
 Nội dung
1. Các lệnh vào ra
2. Các lệnh điều khiển
 2.1. Lệnh điều kiện,
 2.2. Lệnh điều kiện rẽ nhánh,
 2.3. Lệnh lặp với số lần xác định,
 2.4. Lệnh lặp với số lần không xác định,
 2.5. Lệnh ngắt,
 2.6. Lệnh tiếp tục
 2
 Lệnh vào/ra
Thư viện hàm: iostream.h
Hàm nhập giá trị từ bàn phím: cin>>tên biến;
Ví dụ: int a;
 cin>>a;//Lưu giá trị nhập từ phím vào biến a
Hàm xuất giá trị ra màn hình: cout<<tên biến hoặc
chuỗi ký tự;
Ví dụ: int a = 5;
 cout<<“Giá trị của a = “<<a;
Các biến và chuỗi cách nhau bởi dấu <<
(chuỗi nằm trong cặp dấu nháy kép “” )
 3
 Lệnh vào/ra
Thư viện hàm: cout<<setw(n)<<tên biến;
 Chừa một khoảng n ký tự để xuất giá trị
Ví dụ:
 int a=7, b=9;
 cout<<a<<setw(5)<<b;//dùng 5 vị trí để xuất giá trị
b.
Kết quả: 7 9
 4
 Lệnh vào/ra
cout<<setprecision(n);
 Xuất số gồm n-1 chữ số thập phân
 đã làm tròn.
Ví dụ: Kết quả:
 7.56745
float a=7.56745, b=5.339;
 7.57
 cout<<a<<endl;
 5.3
 cout<<setprecision(3)<<a<<endl; 5.339
 cout<<setprecision(2)<<b<<endl;
 cout<<setprecision(5)<<b;
 5
 Lệnh vào/ra
Xuất ký tự đặc biệt
 6
 Lệnh vào/ra
Xuất ký tự đặc biệt
 7
 Lệnh điều kiện
 Dạng 1: 
 – Cú pháp: 
 if(expression) 
 statement; 
 ● Ý nghĩa: 
 Expression được định trị. Nếu
 kết quả là true thì statement được thực thi, 
 ngược lại, không làm gì cả.
 8
 Lệnh điều kiện
Ví dụ: Viết chương trình nhập vào một số nguyên a. In ra màn
hình kết quả a có phải là số dương không.
 #include 
 #include 
 int main() 
 { 
 int a; 
 cout >a; 
 if(a>=0) 
 cout << a << " is a positive.”; 
 getch(); 
 return 0; 
 } 
 9
 Lệnh điều kiện
 Lưu đồ cú pháp
 Dạng 2:
 – Cú pháp:
 if (expression) 
 statement1; 
 else 
 statement2;
● Ý nghĩa: 
− Nếu Expression được định là true thì 
 statement1 được thực thi. 
− Ngược lại, thì statement2 được thực thi. 
 10
 Lệnh điều kiện
Ví dụ: Viết chương trình nhập vào một số nguyên a. In ra màn
hình kết quả kiểm tra a là số âm hay dương.
 #include 
 #include 
 int main()
 {
 int a;
 cout > a;
 if(a>=0)
 cout << a << " is a positive.”;
 else
 cout << a << " is a negative.”;
 getch(); return 0;
 }
 11
 Lệnh điều kiện
Lưu ý:
 Ta có thể sử dụng các câu lệnh ifelse lồng
 nhau. Khi dùng ifelse lồng nhau thì else sẽ
 kết hợp với if gần nhất chưa có else.
 Nếu câu lệnh if “bên trong” không có else thì
 phải đặt trong cặp dấu {}
 12
 Cấu trúc switch
 Cấu trúc switch là một cấu trúc lựa chọn có nhiều 
 nhánh, được sử dụng khi có nhiều lựa chọn.
 Cú pháp: 
 switch(expression) 
 { 
 case value_1: statement_1; [break;] 
 case value_n: statement_n; [break;] 
 [default : statement;] 
 }
 13
Cấu trúc switch
 14
 Cấu trúc switch
 Giải thích:
 − Expression sẽ được định trị.
 − Nếu giá trị của expression bằng value_1 thì
 thực hiện statement_1 và thoát.
 − Nếu giá trị của expression khác value_1 thì so
 sánh với value_2, nếu bằng value_2 thì thực
 hiện statement_2 và thoát., so sánh tới
 value_n.
 − Nếu tất cả các phép so sánh đều sai thì thực
 hiện statement của default.
 15
 Cấu trúc switch
 Lưu ý:
 −Expression trong switch() phải có kết quả là
 giá trị kiểu số nguyên (int, char, long).
 −Các giá trị sau case phải là hằng nguyên.
 −Không bắt buộc phải có default.
 −Khi thực hiện lệnh tương ứng của case có
 giá trị bằng expression, chương trình thực
 hiện lệnh break để thoát khỏi cấu trúc switch.
 16
 Cấu trúc switch
Ví dụ: Nhập vào một số nguyên, chia số nguyên này cho 2 lấy phần dư.
Kiểm tra nếu phần dư bằng 0 thì in ra thông báo “là số chẵn”, nếu số dư
bằng 1 thì in thông báo “là số lẽ”.
#include 
#include 
void main () {
 int n, remainder; 
 cout>n; remainder = (n % 2); 
 switch(remainder) 
 { 
 case 0: cout << n << ” is an even."; break; 
 case 1: cout << n << ” is an odd."; break; 
 } 
 getch(); } 
 17
 Cấu trúc for
 Cú pháp:
 for (Exp1; Exp2; Exp3)
 statement;
 Ý nghĩa:
− Exp1: là biểu thức khởi tạo
 được thực hiện.
− Exp2: là biểu thức điều kiện
− Exp3: biểu thức điều khiển
 lặp
 18
 Cấu trúc for
Ví dụ: Viết chương trình tính tổng các số nguyên từ 1 đến n. 
#include 
#include 
void main() 
{ 
 int i, n, sum; 
 cout> n; 
 sum = 0; 
 for (i=1 ; i<=n ; i++) 
 sum += i;
 cout<<”Sum from 1 to “ << n << ” is: ” << sum; 
 getch(); 
} 19
 Cấu trúc for
 C/C++ cho phép Exp1 là một định nghĩa biến
 Ví dụ: for(int i=1; i<=n; ++i)
 Bất kỳ biểu thức nào trong 3 biểu thức của
 vòng lặp for đều có thể rỗng
 Ví dụ: for(; i != 0;) statement;
 Xóa tất cả các biểu thức trong vòng lặp for sẽ
 cho một vòng lặp vô tận.
 Ví dụ:
 for (;;) statement;
 20
 Cấu trúc while
 Cú pháp: 
 while(expression) 
 statement;
 Ý nghĩa:
● B1: Expression được định trị
● B2: Nếu kết quả là true thì
 statement thực thi và quay lại
 B1 
● B3: Nếu kết quả là false thì
 thoát khỏi vòng lặp while.
 21
 Cấu trúc while
Ví dụ: Viết chương trình tính tổng các số nguyên từ 1 tới n. 
#include 
#include 
void main () 
{ 
 int i, n, sum; 
 cout> n; 
 i = 1; sum = 0; 
 while(i<=n) { 
 sum += i; i++; } 
 getch(); 
} 22
 Cấu trúc do  while
 Cú pháp: 
 do { 
 statement; 
 }while(expression);
● Ý nghĩa:
− Statement được thực hiện
− Expression được định trị. 
− Nếu expression là true thì
 quay lại bước 1 
− Nếu expression là false thì
 thoát khỏi vòng lặp. 
 23
 Cấu trúc do  while
 #include 
Ví dụ 1: Viết chương #include 
trình in dãy số nguyên void main () 
từ 1 đến 10. { 
 int i=1; 
 clrscr(); 
 cout<<"Display one to ten: "; 
 do 
 { 
 cout << setw(3) << i; 
 i+=1; 
 } while(i<=10); 
 getch(); 
 } 24
 Vòng lặp while và do . While
 while(điều kiện ) do
 { {
 //thân vòng lặp //thân vòng lặp
 } }while(điều kiện);
 - Nếu điều kiện đúng thì - Thân vòng ít nhất
 thân vòng lặp đc thực được thực thi 1 lần
 hiện, nếu đk sai thì kết - Hàm do while sẽ thực
 thúc vòng lặp
 thi xong rồi mới kiểm
 - Trong hàm while thì thân
 vòng lặp có thể KHÔNG tra điều kiện
 ĐƯỢC thực thi lần nào
 cả
Thông thường ta sử dụng while, do  while để thiết lập vòng lặp vĩnh cửu
để thực các dòng lệnh liên tục nào đó.
Ta sẽ kết hợp với từ khóa break để thoát khỏi vòng lặp vĩnh cửu. 25
 Lệnh break
 Lệnh break dùng để thoát khỏi một cấu trúc điều
 khiển mà không chờ đến biểu thức điều kiện
 được định trị.
 Khi break được thực hiện bên trong 1 cấu trúc
 lặp, điều khiển (control flow) tự động nhảy đến
 lệnh đầu tiên ngay sau cấu trúc lặp đó.
 Không sử dụng lệnh break bên ngoài các cấu
 trúc lặp như while, do...while, for hay cấu trúc
 switch.
 26
 Lệnh break
Ví dụ: Đọc vào một mật khẩu người dùng tối đa
 attempts lần
for (i=0; i<attempts ; ++i)
{
 cout<<“Input a password:”;
 cin >> passWord;
 if (check(passWord)) //kiểm tra mật khẩu
 break; // thoát khỏi vòng lặp
 cout <<“Password is wrong!\n”;
}
 27
 Lệnh continue
 Lệnh continue dùng để kết thúc vòng lặp hiện tại
 và bắt đầu vòng lặp tiếp theo.
 Lệnh continue chỉ được dùng trong thân các cấu
 trúc lặp như for, while, do...while.
 Câu lệnh continue thường đi kèm với câu lệnh if.
 28
 Lệnh continue
Ví dụ: Một vòng lặp thực hiện đọc một số, bỏ qua 
những số âm, và dừng khi số nhập vào là số 0. 
do
{ 
 cin >> num; 
 if (num < 0) 
 continue; // process num here 
} while(num != 0);
 29
 Mảng (array)
 Mảng là một tập hợp các giá trị có cùng kiểu dữ
 liệu nằm liên tiếp nhau trong bộ nhớ và được
 tham chiếu bởi một tên chung chính là tên mảng.
 Mỗi phần tử của mảng được tham chiếu thông
 qua chỉ mục (index).
 Giá trị
 1 0 5 3 6 4 7 9 2 4
 0 1 2 3 4 5 6 7 8 9
 Vị trí
 Vị trí được tính từ 0
 30
 Mảng (array)
 Nếu mảng có n phần tử thì phần tử đầu tiên có
 chỉ mục là 0 và phần tử cuối có chỉ mục là n-1.
 Để tham chiếu đến một phần tử ta dùng tên
 mảng và chỉ mục của phần tử được đặt trong
 cặp dấu [].
 Ví dụ: a[0]
 Số lượng phần tử có trong mảng được gọi là
 kích thước của mảng, luôn cố định, phải được
 xác định trước và không đổi trong suốt quá trình
 thực hiện chương trình.
 31
 Mảng (array)
Mảng là 1 đối tượng dùng để lưu trữ các phần tử có cùng
một kiểu dữ liệu
Chỉ số mảng bắt đầu được tính từ 0
 i=0 i=1 i=2 i=3 i=4 i=5
 Mảng M có 6 phần tử
 9 0 8 7 10 50 N=6
 Là phần tử 
 M[i]
 M[0] M[4] tại vị trí thứ i
 Đối với duyệt mảng, người ta thường dùng vòng for, ít khi dùng
 vòng while, do.. while 32
 Mảng một chiều
Khai báo một mảng một chiều
 Cú pháp: 
 type arrayName[elements]; 
 −type: kiểu dữ liệu của mỗi phần tử mảng.
 −arrayName: tên mảng
 −elements: số phần tử có trong mảng
 Ví dụ: int a[5]
 a 3 5 2 7 9
 a[0] a[1] a[2] a[3] a[4]
 33
 Mảng một chiều
Ví dụ:
int a[100]; //Khai báo mảng số nguyên a gồm 100 
 phần tử
float b[50]; //Khai báo mảng số thực b gồm 50 
 phần tử
char str[30]; //Khai báo mảng ký tự str gồm 30 ký
 tự
 34
 Mảng một chiều
 Mảng phải được khai báo tường minh 
 Kích thước (tính bằng byte) của mảng được tính
 theo công thức: 
 Total_size = sizeof(type) * elements
Ví dụ:
 int num[100]; 
 Mảng num có kích thước là:
 2bytes * 100 = 200bytes (giả sử int chiếm 2 
 bytes) 
 35
 Mảng một chiều
 Mỗi phần tử mảng là một biến thông thường. 
Ví dụ:
 int num[3];
 num[0] = 2; //gán 2 cho phần tử num[0] 
 num[1] = num[0] + 3 //num[1] có giá trị 5 
 num[2] = num[0] + num[1]; //num[2] có giá trị 7 
 cout << num[1]; //In ra giá trị 5
 36
 Mảng một chiều
Khai báo và khởi tạo mảng một chiều
 Cú pháp: 
 type arrayName[]= {value1, value2, ..., valuen};
 Lưu ý: 
 − Không khai báo kích thước mảng. 
 − Số lượng phần tử trong mảng là số các giá trị
 được cung cấp trong cặp dấu ngoặc {}, được
 phân cách nhau bởi dấu phẩy.
 37
 Mảng một chiều
Ví dụ:
 int soChan[] = {2,4,6,8,10}; 
 Mảng soChan có 5 phần tử lần lượt là: 
 soChan[0] có giá trị là 2 
 soChan[1] có giá trị là 4 
 ... 
 soChan[4] có giá trị là 10
 38
 Mảng một chiều
Khai báo và gán giá trị ban đầu cho mảng một chiều:
Gán từng phần tử
int a[5] = {3, 6, 8, 1, 12}; 
 Giá trị 3 6 8 1 12
 Vị trí 0 1 2 3 4
Gán số lượng phần tử khởi tạo ít hơn số phần tử của mảng:
int a[8] = {3,5,2}
 Giá trị 3 5 2 0 0 0 0 0
 Vị trí 0 1 2 3 4 5 6 7
 39
 Mảng một chiều
Truy xuất giá trị
Tên mảng [ vị trí cần truy xuất ]
void main()
{
 int a[5] = {3, 6, 8, 11, 12}; 
 cout<<“Giá trị mảng tại vị trí 3 = “<<a[3];
}
Kết quả: Giá trị mảng tại vị trí 3 = 11
 40
 Mảng một chiều
Các thao tác trên mảng:
  Nhập dữ liệu
  Xuất dữ liệu
  Tìm kiếm
  Đếm
  Sắp xếp
  Kiểm tra mảng thỏa điều kiện cho trước
  Tách/ ghép mảng
  Chèn / xóa
 41
 Mảng một chiều
Nhập dữ liệu
Có 2 cách nhập dữ liệu cho từng phần tử trong
mảng:
 - Cách 1: nhập bằng tay từ bàn phím
 - Cách 2: cho máy tự động nhập
 42
 Mảng một chiều
Ví dụ: Tạo một mảng nguyên a có N phần tử. Mỗi phần
tử có giá trị là chỉ mục của nó. In mảng ra màn hình.
 43
Mảng một chiều
 44
 Mảng một chiều
 Nhập mảng tự động bằng máy:
Để khởi tạo xuất ra các số ngẫu nhiên, ta phải viết hàm
này trước:
 srand(time(NULL));
 Hàm trên có ý nghĩa là yêu cầu máy tính khởi động để
 tạo các số ngẫu nhiên : Tức là mỗi lần chạy chương
 trình thì nó sẽ tự động phát sinh ra các con số có giá trị
 khác nhau.
 **** nếu như không có dòng này thì mỗi lần chạy 
 chương trình sẽ cho ra có số ngẫu nhiên GIỐNG NHAU. 
 45
 Mảng một chiều
 Để lấy giá trị ngẫu nhiên , ta dùng công thức bên dưới:
rand()%n: Tức lấy lấy các giá trị ngẫu nhiên từ 0 cho tới n-1
Như vậy nếu ta gọi rand()%100: tức là lấy giá trị
ngẫu nhiên từ 0 đến 99
Đề bài : Hãy xuất các số ngẫu nhiên từ -55 cho tới 150
(-77 88) Rand()%n -77=88 n=166
(30 95) rand()%n +30=95 n=66
(-55 150) Rand()%n -55 =150 n=206
(-50 -100) ?
 46
Mảng một chiều
 47
 Mảng một chiều
Ví dụ: Chương trình nhập vào mảng một chiều số nguyên a, 
kích thước n. In ra các phần tử có giá trị lớn hơn x có trong
mảng
 48
Mảng một chiều
 49
 Mảng một chiều
 Sắp xếp:
void SapTang(int a[], int n)
{
 for (int i = 0; i < n-1; i ++)
 for(int j = i+1; j < n; j ++)
 if (a[i] > a[j])
 HoanVi(a[i], a[j]);
}
void HoanVi(int &a, int &b)
{
 int tam = a;
 a = b;
 b = tam;
} 50
 Mảng nhiều chiều
 C/C++ hỗ trợ mảng nhiều chiều. Dạng đơn giản
 nhất của mảng nhiều chiều là mảng hai chiều.
 Mảng hai chiều thực chất là mảng của những
 mảng một chiều. Ta có thể xem mảng hai chiều là
 một ma trận gồm các hàng và các cột
 Khai báo mảng hai chiều:
 type arrayName[rows][columns];
 − rows: số hàng
 − columns: số cột
 51
 Mảng nhiều chiều
Ví dụ: Khai báo mảng số nguyên 3 hàng 4 cột
 int a[3][4]
 52
 Mảng nhiều chiều
Ví dụ: int M[5][3];
  Khai báo 1 mảng 2 chiều tên là M, có 5 dòng, 3 cột.
  Tổng số phần tử trong mảng = 5*3 =15 phần tử
Ví dụ: float K[3][4];
  Khai báo 1 mảng 2 chiều tên là K có kiểu số thực, 
 số dòng là 3, số cột là 4 tổng số phần tử là
 4*3=12;
 Tương tự như mảng 1 chiều, chỉ số của các phần tử
 được đánh dấu từ số 0 cho tới số dòng -1 hoặc số
 cột -1
 53
 Mảng nhiều chiều
 Mảng 2 chiều M có 4 dòng và 5 cột
 Chiều duyệt theo cột, thường đặt tên là j
Chiều
 j j =1 j =2 j =3
 j j = j =4
 0
duyệt
theo M[0][0] M[0][1] M[0][2] M[0][3] M[0][4] Tức là để truy
 i =0 9 2 0 12 3 suất 1 phần tử tại
dòng
 M[1][0] M[1][1] M[1][2] M[1][3] M[1][4] dòng thứ ivà tại
 2 8 15 7 5 cột thứ j thì ta viết:
, , i =1
thường M[i][j]
 M[2][0] M[2][1] M[2][2] M[2][3] M[2][4] - Ví dụ, muốn lấy
 i =2 10 8 19 13 18 phần tử tại dòng
đặt
 M[3][0] M[3][1] M[3][2] M[3][3] M[3][4] 2, cột 3 thì ta viết
tên i =3 17 86 78 46 0 M[2][3]
là Thông thường, người ta sử dụng 2 vòng for lồng nhau để duyệt
i
 mảng 2 chiều. Vòng for ngoài duyệt theo dòng, vòng for trong
 duyệt theo cột 54
 Mảng nhiều chiều
int M[dòng][cột];
Ví dụ:
int M[3][2];
 Dòng =3, cột =2 tổng số phần tử = 2*3 =6 phần
 tử
 Để duyệt mảng, ta kết hợp 2 vòng for lồng nhau,
 vòng for ngoài chạy theo chỉ số dòng (giả sử đặt là
 i), vòng for trong chạy theo chỉ số cột (giả sử đặt
 là j).
 55
Mảng nhiều chiều
 56
Mảng nhiều chiều
 57
 Mảng nhiều chiều
58
 Mảng nhiều chiều
59

File đính kèm:

  • pdfbai_giang_tin_hoc_co_so_2_chuong_2_cac_lenh_vao_ra_va_cac_le.pdf