intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kĩ thuật lập trình (Chương 1 - 6)

Chia sẻ: Hikari Jun | Ngày: | Loại File: PDF | Số trang:18

110
lượt xem
15
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Ngôn ngữ lập trình Hợp ngữ thuộc loại ngôn ngữ lập trình tuyến tính. •Các phần của chương trình nối nhau theo dãy dài, làm khó hiểu về mặt logic. •Việc điều khiển chương trình được thực hiện bằng cách nhảy lung tung, khó kiểm soát. •Mọi dữ liệu đều toàn cục, nên các thành phần của chương trình có thể làm thay đổi nó.Ngôn ngữ lập trình Pascal hay C thuộc loại ngôn ngữ lập trình cấu trúc. •Chương trình được chia nhỏ thành các hàm (function) thực hiện một chức năng chuyên biệt. •Có thể coi hàm là các chương trình thu nhỏ,...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kĩ thuật lập trình (Chương 1 - 6)

  1. Mục tiêu • Hiểu được Thuật toán là gì ? • Mô tả những thuật toán cơ bản. Chương 1 • Giải thích được các bước để giải một bài toán bằng máy tính. GiỚI THIỆU VỀ THUẬT TOÁN Nội dung 1.1- Giới thiệu tổng quan Ví dụ : Thực hiện phép tính cộng 2 số nguyên • Giới thiệu tổng quan • Khái niệm về thuật toán • Thông tin (information) – Cho biết giá trị của 2 số nguyên • Các phương pháp biểu diễn thuật toán – Thông báo kết quả tính tổng • Dữ liệu (data) – Chứa số nguyên thứ 1 – Chứa số nguyên thứ 2 – Chứa số nguyên tổng kết quả 1.2.Lưu trữ dữ liệu 1.3.Dạng biểu diễn dữ liệu và toán tử • Một dữ liệu phải có vùng nhớ chứa nó Dạng biểu diễn số nhị phân + = • Nhiều dữ liệu cần vùng nhớ lớn • Hai loại lưu trữ dữ liệu thường dùng: 3 2 5 00000011 00000010 00000101 số ký tự 00000011 Cộng hai biểu diễn số nhị phân + 00000010 Đúng cho kết qủa là một biểu diễn nhị số nguyên nhỏ số nguyên lớn số thực chuỗi ký tự phân đúng kết qủa đang mong đợi. 00000101 Chuong 03- Co ban ve Ngon ngu C 1
  2. 1.4.Lệnh máy- Machine Instruction 1.5.Chương trình- Program • Một dữ liệu quy định cách CPU thực thi 1 tác vụ cơ bản • Chương trình: Tập các lệnh máy • Dạng 1 lệnh máy: mà CPU phải thực thi nhằm giải 1001001000101... một bài toán. 110111 1000100101101 1010011001011 1100110011000... Tác vụ Toán hạng 1 Toán hạng 2 • Một chương trình là 1 tập tin có 0101001100110... (cộng) (address 1) ( address 2) phần mở rộng tùy thuộc vào hệ 1010110100001 điều hành. ............. • Có thể có toán hạng 3 (dữ liệu chứa kết qủa). • Thông thường 1 chương trình • Dạng lệnh máy phụ thuộc kiến trúc CPU. có tên mở rộng: .exe, .com • Lệnh máy là lệnh nhị phân. • CPU chạy 1 chương trình theo cách tuần tự từng lệnh. 1.6.Thuật toán - Algorithm 1.7.Biểu diễn thuật toán • Cách diễn giải một bài toán • Dùng ngôn ngữ tự nhiên • Cách tiếp cận để giải bài toán. • Dùng lưu đồ (flowchart) • Muốn giải thì phải biết cách giải. • Mã giả • Cách giải 1 bài toán cụ thể là 1 thuật toán cụ thể • Mô tả 1 thuật toán là diễn đạt các bước thực thi của thuật toán đó. Thuật toán - Mô tả bằng ngôn ngữ Yếu điểm của cách diễn đạt tự nhiên bằng NNTN Ví dụ : Thực hiện phép tính cộng 2 số nguyên • NNTN có nhiều cách diễn đạt khác nhau 1. Nhập vào số nguyên thứ 1 (a) 2. Nhập vào số nguyên thứ 2 (b) cho 1 thuật toán. 3. Tính tổng của a và b • Dùng NNTN để diễn đạt thuật toán có khả 4. Xuất tổng năng gây “hiểu sai ”. 3 2 5 năm Chuong 03- Co ban ve Ngon ngu C 2
  3. Thuật toán - Mô tả bằng lưu đồ Thuật toán - Mô tả bằng mã giả (Flowchart) (Pseudo code) Minh họa: Thực hiện phép • Dùng hình vẽ (graphic) để mô tả một thuật toán. • Mã giả thực chất là tính cộng 2 số nguyên • Trong lưu đồ chỉ rõ tiến trình thực thi thuật toán. ngôn ngữ tự nhiên có pha lẫn một số cách viết • Không thể hiểu lầm vì có quy tắc để vẽ. Begin của ngôn ngữ lập trình. • Điểm bắt đầu và kết thúc Begin End Nhập a • Hướng tính toán Nhập b • Nhập/xuất Nhập a Xuất c B1: Nhập số nguyên a • Tính toán c=a+b B2: Nhập số nguyên b c=a+b • Lựa chọn ½ a>0 no • Lựa chọn 1/n yes 5 d 2 B3: c = a+b; Xuất c • Điểm ráp nối khi lưu đồ lớn 7 9 B4: Xuất số nguyên c X X End 1.8.Minh họa: Giải thuật tìm trị lớn nhất trong 3 số Begin t=a 5 7 B1: t = a; yes a 5 B2: if (t
  4. 2.2.Dịch chương trình- Translating 2.3.Các loại ngôn ngữ lập trình thông dụng Biên dịch • Ngôn ngữ lập trình Hợp ngữ Chương trình Compile theo ngôn ngữ lập trình (dịch toàn bộ) Chương trình • Ngôn ngữ lập trình Basic • Ngôn ngữ lập trình Pascal • Ngôn ngữ lập trình C / C++ Chương trình theo ngôn ngữ Thông dịch Interpreting CPU • Ngôn ngữ lập trình Java 1 lệnh thực thi lập trình (dịch từng câu) •… 2.4.Lập trình tuần tự - tuyến tính 2.5.Lập trình cấu trúc • Ngôn ngữ lập trình Hợp ngữ thuộc loại • Ngôn ngữ lập trình Pascal hay C thuộc loại ngôn ngữ lập trình tuyến tính. ngôn ngữ lập trình cấu trúc. • Các phần của chương trình nối nhau theo • Chương trình được chia nhỏ thành các hàm dãy dài, làm khó hiểu về mặt logic. (function) thực hiện một chức năng chuyên biệt. • Có thể coi hàm là các chương trình thu nhỏ, liên • Việc điều khiển chương trình được thực kết lại với nhau để xây dựng nên ứng dụng. hiện bằng cách nhảy lung tung, khó kiểm • Dễ bảo trì, tăng độ tin cậy, chính xác. soát. • Biến toàn cục giảm, biến cục bộ tăng lên. • Mọi dữ liệu đều toàn cục, nên các thành • Khi thay đổi cấu trúc dữ liệu dùng chung thì phần của chương trình có thể làm thay đổi nhóm lập trình cùng viết chung chương trình bị nó. ảnh hưởng. 2.6.Lập trình Hướng đối tượng 2.7.Các bước xây dựng chương trình • Bước 1: Hiểu kỹ và biết cách giải bài toán • Ngày nay, C++ hay C#, java… thuộc loại ngôn – Xác định dữ liệu liên quan đến bài toán ngữ lập trình hướng đối tượng. – Hiểu các thao tác lên dữ liệu • Trừu tượng dữ liệu, không bận tâm chi tiết cài • Bước 2: Tìm một giải thuật để giải. đặt cụ thể. – Sắp xếp các thao tác sao cho có thứ tự hợp lý. • Có thể sử dụng lại một cách dễ dàng hay nâng • Bước 3: Viết chương trình theo ngôn ngữ. cấp các đối tượng. – Mở trình soạn thảo. • Càng dễ bảo trì, tăng độ tin cậy, chính xác. – Viết chương trình theo ngôn ngữ đã chọn. – Biên dịch chương trình và sửa lỗi cú pháp. – Chạy chương trình, kiểm tra kết qủa. Chuong 03- Co ban ve Ngon ngu C 4
  5. 2.7.Các bước xây dựng chương trình Phân Dữ liệu Dùng Chương Start Bài toán Editor trình tích Giải thuật NNLT ngôn ngữ End Xin cám ơn No Yes giải thuật sai Lỗi cú pháp Dịch Kq Chương trình Lỗi đúng Chạy Yes mã máy ? ? No Tài liệu tham khảo • “Lập trình C”, Quách Tuấn Ngọc, Nhà Xuất Bản Giáo dục 2004 • “Kỹ thuật lập trình C cơ sở và nâng cao”, Phạm Văn Ất, Nhà Xuất Bản Khoa Học Kỹ Thuật – 1996. Chương 3 • “Giáo trình ngôn ngữ C”, Lê Hoài Bắc – Lê Hoàng Thái – Nguyễn Tấn Trần Minh Khang – Nguyễn Phương Thảo, Nhà Xuất Bản Đại Học Quốc Gia Tp. Hồ Chí Minh – 2003. MỞ ĐẦU VỀ NGÔN NGỮ C • “Giáo trình lý thuyết & Bài tập ngôn ngữ C”, Nguyễn Đình Tê – Hoàng Đức Hải, Nhà Xuất Bản Mũi Cà Mau. • “Bài tập ngôn ngữ C từ A đến Z”, Huỳnh Tấn Dũng – Hoàng Đức Hải, Nhà Xuất Bản Lao Động – Xã Hội. Nội dung 3.1. Tập ký tự của C – Character set • Nhận biết tập ký tự dùng trong C • Digits: 0..9 • Nhận biết một số từ khóa của C. • Nhận biết tổ hợp ESCAPE của C • Dạng thức của một chương trình C • Letters- alphabet characters: a..z, A..Z • Chỉ thị tiền xử lý • Nhận biết các kiểu dữ liệu cơ bản của C • Special characters: + - * / % & ! # ^ & … • Tự định nghĩa được kiểu dữ liệu • Định nghĩa và phân biệt được hằng và biến  Các ký tự in được của bàn phím chuẩn • Nhận diện và sử dụng được các toán tử của C • Biết sử dụng các cấu trúc điều khiển của C Chuong 03- Co ban ve Ngon ngu C 5
  6. 3.2. Từ khóa – Keywords 3.3. Tên – Name / Identifier • Là những từ ngôn ngữ C đã định nghĩa sẵn cho người lập • Do người lập trình tự định nghĩa, dùng đặt tên cho trình sử dụng để thiết kế chương trình. hằng, biến, hàm…(không được trùng với keywords) • Tên là 1 từ, chiều dài 1 từ : Có thể tự ấn định bằng • Là thành phần cơ bản để tạo câu lệnh trong C. Menu Options / Compiler / Source / Identifier Length • Bao gồm các nhóm: • Các từ trong C phân biệt chữ hoa chữ thường (case- – Kiểu số nguyên : char , int , short , unsigned , long sensitive) „a‟..‟z‟, „A‟..‟Z‟ – Kiểu số thực: float , double „_‟ (gạch nối) – Kiểu rời rạc : enum „a‟..‟z‟, „A‟..‟Z‟ – Kiểu cấu trúc : struct , union „_‟ (gạch nối) – Kiểu rỗng: void „0‟..‟9‟ – Tự định kiểu: typedef – Khai báo hằng: const , define – Khai báo biến: static , extern , auto, register, volatile Hãy cho biết các tên sau tên nào là hợp lệ? – cấu trúc chọn : if , else , switch , case , default m _12 _m12 12m 6L – cấu trúc lăp: for , while , do Hãy cho biết các tên sau có cùng ngữ nghĩa hay không? – Từ khóa điều khiển: break , continue , return , goto delta Delta dElta DELTA – … 3.5.Các kiểu dữ liệu cơ bản của C 3.4. Chuỗi Cách viết Tên gọi Ý nghĩa – Data types ESCAPE '\'' Single quote Ký tự ' • Escape: thoát, bỏ qua '\"' Double quote Ký tự " • Kích thước và phạm vi của kiểu dữ liệu phụ thuộc '\\' Backslash Ký tự \ vào trình biên dịch ( xem Số limit.h và float.h ) Định dạng file • Chuỗi escape bắt đầu Nhập/Xuất Kiểu byte Phạm vi ‘\?’ Question mark Ký tự ? bằng ký tự „\‟ mang ý %c unsigned char 1 0 .. 255 ‘\a’ Alert Phát tiếng Beep ra loa nghĩa bỏ qua ý nghĩa %c char 1 -128 .. 127 '\n' New line Xuống dòng mới thông thường của ký '\0' NULL Rỗng %u unsigned int 2 0 .. 65,535 tự đứng sau ký tự Di chuyển con nhấp nháy %d, %i int 2 - 32,768 .. 32,767 '\t' Horizontal tab %lu unsigned long 4 0 .. 4,294,967,295 này. tới vị trí tab kế tiếp %ld, %li long 4 -2,147,483,648 .. 2,147,483,647 • Do đó chuỗi escape '\b' Backspace Lùi con nhấp nháy 1 vị trí %f float 4 3.4 * (10-38) .. 3.4 * (10+38) mang một ý nghĩa đặc '\r' Carriage return Đưa con nhấp nháy về đầu dòng %lf double (long float) 8 1.7 * (10-308) .. 1.7 * (10+308) biệt. '\f' Form feed Sang trang kế tiếp %lf long double 10 3.4 * (10-4932) .. 1.1 * (10+4932) 3.6. Hằng – Constant Chú ý: #define • Cách 1:Dùng macro. Ví dụ: #define PI 3.141592 • Đặt một tên gọi cho một nội dung • Còn gọi là macro. • Cách 2: Dùng từ khóa const. Ví dụ: #include const PI = 3.141592; #include #define PI 3.141592 Hay là: void main() { printf("%lf", 3.141592*3.2*3.2); const double PI = 3.141592; getch(); } Thay thế trị trước khi biên dịch Chuong 03- Co ban ve Ngon ngu C 6
  7. Hiệu ứng lề – Side effect Thí dụ: Error! #include #include #define PI =3.141592; void main() { printf("%lf", =3.141592;*3.2*3.2); getch(); } -Hằng không kiểu: trình biên dịch dùng bộ nhớ ít nhất để #include Không được chứa, tối thiểu là 2 bytes. #include #define Area(x) x*x mong đợi -Hằng có kiểu sẽ buộc trình void main() biên dịch phải dùng đúng { printf("%lf", 3+2*3+2); kiểu đã chỉ định để lưu trữ getch(); trị hằng. } -Hằng chuỗi ký tự được để trong cặp nháy đôi. #define Area(x) (x)*(x) (3+2)*(3+2) OK -Hằng ký tự được để trong Toán tử sizeof(data) cho biết số byte cặp nháy đơn. mà data này chiếm chỗ. 3.7. Biến – Variable Ví dụ • Biến phải thuộc 1 kiểu dữ liệu. tênbiến; • Khai báo biến: • 2 biến cùng kiểu cách nhau dấu phẩy. • C chuẩn chỉ cho phép khai báo biến ở đầu chương trình. Còn C++, cho phép khai báo biến Ví dụ: bất kỳ chỗ nào nếu thấy cần. int m=3 ; Lỗi “khai báo kết thúc không đúng cách” vì khai báo xong biến t, long t1=23, t2=3*t1; sang biến kiểu khác mà để dấu “phẩy”. Đáng lẽ phải là dấu “chấm phẩy”. double z1, z2, z3 ; char c1 , c2 = „A‟ ; 3.8. Cấu trúc một chương trình 3.7. Biến – Variable C Lấy địa chỉ của biến: &tênbiến /* CHAO.CPP Chuong trinh minh hoa don gian */ /*…*/ Khối chú thích // Xuat chuoi “Chao cac ban” ra man hinh // Chú thích đến cuối dòng #include #include Khai báo sử dụng thư viện void main() #include : chỉ thị tiền xử lý { clrscr(); printf(“Chao cac ban"); Chương trình chính , bắt buộc là main() getch(); Đúng về Syntax, } ; kết thúc 1 câu lệnh đơn nhưng Sai về Lý luận Chuong 03- Co ban ve Ngon ngu C 7
  8. Ví dụ: Cấu trúc một chương trình C Chú thích – Comment • Dùng để giải thích chương trình. Từ nay về sau, chúng ta nên thêm phần chú thích để gợi nhớ • Chú thích 1 dòng: chỉ dùng trong C++ // Chú thích • Chú thích nhiều dòng: C/C++ /* Các dòng chú thích …… */ • Dòng chú thích được bỏ qua khi biên dịch Chỉ thị tiền xử lý – Preprocessor Cách làm việc của chỉ thị indicators #include • Còn được gọi là chỉ thị tiền biên dịch vì đây là những chỉ thị mà trình biên dịch nội dung file stdio.h phải làm trước khi chuyển chương trình C nội dung file thành chương trình mã máy. Compile conio.h „#‟ code • Các chỉ thị này bắt đầu bằng chương trình Chỉ thị #include : Chèn 1 file Không có Lưu ý chỉ thị khoảng trắng #include có khoảng trắng (Error) • #include • #include “file không thuộc Include Directories” • Lưu ý: Không nên có khoảng trống giữa < , > và tên file vì trong cặp ký tự này được hiểu là tên file Chuong 03- Co ban ve Ngon ngu C 8
  9. Nội dung Chương 4 • Các hàm nhập dữ liệu chuẩn NHẬP XUẤT DỮ LIỆU TRONG C • Các hàm xuất dữ liệu chuẩn 4.1. Nhập – Input 4.2. Xuất – Output • Macro: • Macro: – int getchar(); // nhận 1 ký tự từ bàn phím, – int putchar(int c); // xuất ký tự c ra màn hình. // không in ra màn hình • Functions: • Functions: – int getch(); // tương tự như getchar() – int putch(int c); // tương tự như putchar() – int getche(); // nhận 1 ký tự từ bàn phím và – int puts(const char *s); // xuất chuỗi ký tự ra // in ra màn hình // màn hình – char* gets(char *s); // nhận chuỗi ký tự – int printf(const char *format [, argument,…]); – int cprintf(const char *format [, argument,…]); – int scanf(char *format, [, address,…]); Ví dụ: Chương 5 BIỂU THỨC VÀ CÁC PHÉP TOÁN Chuong 03- Co ban ve Ngon ngu C 9
  10. 5.1. Toán tử - Operators Các loại toán tử của C • Toán tử: Ký hiệu mô tả 1 phép toán cho • Toán tử số học – Arithmetic ops kết qủa 1 trị duy nhất. • Toán tử so sánh – Relational ops • Toán hạng (operand): Dữ liệu để phép toán tác động. • Toán tử luận lý – Logical ops • Kết qủa (result): Dữ liệu mới được sinh ra • Toán tử gán – Assignment ops sau khi thực thi xong phép toán. • Toán tử trên bit – Bitwise ops • C hỗ trợ các phép toán có 1/2/3 toán hạng • Các toán tử khác • Unary/binary/ternary operator: Toán tử 1/2/3 ngôi. 5.1.1. Toán tử số học – Ví dụ: Arithmetic operators int k = 3, t = 6; int u = k- -; int v = - - t; Hỏi k, t, u, v có trị bao nhiêu? Lưu ý về Toán tử chia Ví dụ: Kết quả % Nguyên % Nguyên Phần dư Toán tử % chỉ dùng cho số nguyên Phép chia trong C Nguyên / Nguyên Kết quả Phần nguyên Kết quả Nguyên / Thực Thực / Kết quả Thực / Nguyên Thực Kết quả Thực / Thực Thực Chuong 03- Co ban ve Ngon ngu C 10
  11. 5.1.2. Toán tử so sánh – Ví dụ: Relational operators Toán tử so sánh 5.1.2. Toán tử luận lý – Logical operators 5.1.3. Toán tử gán – Assigment operators • Khi gán trị mới cho 1 biến, trị cũ bị ghi đè. 0000000000000001 0000000000001011 x=1; x=11; Toán tử Luận lý Ví dụ Tương đương s = s+a; s += a; s = s / a; s /= a; Ví dụ: 5.1.4. Toán tử bit – Bitwise operators > 7d 1 bit 00001110 14d 00000011 3d 2 bit 00011100 28d 00000001 1d Bạn có nhận xét gì ? Chuong 03- Co ban ve Ngon ngu C 11
  12. Ví dụ: 5.1.5. Các toán tử khác • Ép kiểu (type casting) : – (kiểuT) x – kiểuT (x) • Toán tử 3 ngôi: BTĐK ? X : Y; 0000 0000 0000 0011 0000 0000 0000 0111 0000 0000 0000 0100 • Quản lý bộ nhớ: 7*4  28 – sizeof(biến) : Lấy kích thước byte của „biến‟ 7/4  1 – sizeof(kiểu dữ liệu) : Lấy kích thước byte của „kiểu dữ liệu‟ – new : Cấp phát động một vùng nhớ – delete : Trả một nhớ đã được cấp phát động – &biến : Lấy địa chỉ bộ nhớ của „biến‟ (địa chỉ chiếm 4 byte ở DOS) Ví dụ về ép kiểu lớn sang kiểu nhỏ Ép kiểu tự động • Kiểu kết qủa của 1 biểu thức là kiểu lớn nhất của toán hạng tham gia int n=3; long t=123; double x=5.3; biểu thức. 0000 0001 0000 0000 m=256 3*n + 620*t – 3*x (int*int) + (int*long) - (int*double) 0000 0000 c int + long - double Hãy giải thích vì sao long - double chương trình sau Ép kiểu lớn sang kiểu nhỏ double cho kết qủa sai? Theo bạn, một hộ sử dụng 155 kwh điện một tháng và tính tiền theo công thức sau sẽ cho kết qủa đúng hay sai? 0111 1111 1111 1111 + t =100*650+50*850+5*1150; 0000 0000 0000 0001 1000 0000 0000 0000 5.2. Độ ưu tiên của toán tử – Độ ưu tiên của TT Phép toán Trình tự kết hợp Operator Precedence toán tử 1 () [] ! ~ & –(dấu trừ) ++ -- (type ) sizeof Trái qua phải • Thứ tự mà một toán tử được thực hiện khi 2 Phải qua trái Trái qua phải biểu thức có nhiều toán tử. 3 * ( phép nhân ) / % • Nhìn chung độ ưu tiên: 4 + – (phép trừ) Trái qua phải – Cặp ngoặc từ trong ra 5 > Trái qua phải ngoài 6 < >= Trái qua phải – Toán tử số học, nhân chia 7 == != Trái qua phải trước cộng trừ sau. 8 & Trái qua phải – Toán tử so sánh 9 ^ Trái qua phải – Toán tử luận lý 10 | Trái qua phải – Toán tử gán 11 && Trái qua phải 12 || Trái qua phải 13 ?: Phải qua trái 14 = += -= *= /= %= = &= ^= |= 15 , Trái qua phải Chuong 03- Co ban ve Ngon ngu C 12
  13. 5.3. Biểu thức – Expressions Tham khảo thư viện toán học của C Gõ vào màn hình soạn thảo: math.h • Sự kết hợp đúng cách của hằng, biến, hàm, toán tử Để con nháy dưới từ math, Gõ Ctrl + F1 • Hàm trong biểu thức là một tác vụ cho một trị duy nhất và thuộc kiểu cơ bản. • Các hàm toán học được khai báo trong math.h Nội dung: • Câu lệnh đơn Chương 6 • Khối lệnh CẤU TRÚC ĐIỀU KHIỂN TRONG • Cấu trúc chọn C • Cấu trúc lặp • Ngắt điều khiển 6.1. Câu lệnh đơn – Simple 6.2. Khối lệnh – Block/compound statement statement • Là một câu lệnh đơn giản như: • Gồm một nhóm câu lệnh lại thành một khối trong cặp – Khai báo hằng, biến ngoặc nhọn { }. – Gán trị cho biến • Kết thúc 1 khối lệnh không cần dấu chấm phẩy. –… • Khối lệnh được xem là một câu lệnh. • Kết thúc bằng dấu chấm phẩy ; Chuong 03- Co ban ve Ngon ngu C 13
  14. 6.3. cấu trúc chọn – Select structure 6.3.1. Cấu trúc chọn ½ : • Còn gọi là cấu trúc rẽ nhánh (branching). • Cú pháp : if…else… else phải đi với if ngay trước đó if (condition) CâuLệnh_1; [ else CâuLệnh_2;] • Dựa trên một điều kiện hay một dữ liệu để • Biểu thức điều kiện được tính toán (trả trị 0: sai, 1 hay khác 0:đúng) trước khi rẽ nhánh. xác định một hướng thực thi chương trình. no • Cấu trúc chọn 1/2: if … else … condition no condition ? ? yes yes CâuLệnh CâuLệnh_1 CâuLệnh_2 • Cấu trúc chọn 1/n : switch…case… Ví dụ Ví dụ về một điều kiện thỏa phải làm nhiều lệnh Cả 2 chương trình cùng cho một kết qủa Bạn giải thích thế nào về lỗi Hãy vẽ lưu đồ cho 2 trong chương trình này? chương trình này và tìm sự khác biệt giữa chúng Ví dụ về if lồng nhau - nesting if statement 6.3.2: Cấu trúc else if • Cú pháp lệnh if (biểu thức luận lý 1) khối lệnh 1; else if (biểu thức luận lý 2) khối lệnh 2; … else if (biểu thức luận lý n-1) khối lệnh n-1; else Bạn hãy diễn đạt chương trình trên bằng khối lệnh n; ngôn ngữ tự nhiên và vẽ lưu đồ. 84 Chuong 03- Co ban ve Ngon ngu C 14
  15. Cấu trúc else if Cấu trúc else if Vào • Nếu biểu thức luận lý 1 đúng thì thực hiện khối lệnh 1 và thoát khỏi cấu trúc if 0 0 0 … • Ngược lại Nếu biểu thức luận lý n-1 BTĐK1 BTĐK2 BTĐKn -1 đúng thì thực hiện khối lệnh n-1 và thoát 1 1 1 khỏi cấu trúc if Ngược lại thì • thực hiện khối lệnh n. KL1 KL2 KLn-1 KLn 85 Ra 86 6.3.2. Cấu trúc chọn 1/n – Lưu đồ chi tiết switch…case • Dựa trên trị một biểu thức số nguyên hoặc ký tự (kiểu có thứ tự) để rẽ nhánh. switch (Bt) { case c1: CácCLệnh_1; break; thân case c2: CácCLệnh_2; break; Cấu trúc case c3: CácCLệnh_3; break; Bt switch… ….. case default: CácCLệnhCuối; c1 other } c2 c3 • c1,c2,c3,… là các hằng số nguyên hoặc ký tự. • Nếu không có break, câu lệnh kế tiếp được thực thi cho đến khi gặp break, hoặc hết thân của switch. • Các case đóng vai trò điểm nhập của một lựa chọn. 88 • void main(void) Vi dụ :Viết chương trình nhập vào tháng và in • • { int ithang; printf("Nhap vao thang: "); • scanf("%d", &ithang); ra quý. (tháng 1 -> quý 1, tháng 10 -> quý 4) • • if (ithang > 0 && ithang 3: quý 1, • • case 5: case 6: • printf("Quy 2.\n"); 4->6: quý 2, 7->9: quý 3, 10->12: quý 4). • • case 7: break; • case 8: case 9: printf("Quy 3.\n"); break; • case 10: • case 11: • case 12:printf("Quy 4.\n"); • break; • }; • } • else • printf("Thang khong hop le.\n"); • getch(); • } 89 90 • Chuong 03- Co ban ve Ngon ngu C 15
  16. Ví dụ: Bài toán người cha thưởng con 6.4. Cấu trúc lặp – Loops • Cấu trúc lặp while • Cấu trúc lặp do … while Theo bạn, người con được thưởng mấy • Cấu trúc lặp for cái áo và bao nhiêu tiền ? 6.4.1. do..while Loops, while Loops 6.4.2. for Loops KhởiTạo; KhởiTạo; Kiểm tra điều kiện do • for (KhởiTạo ; Biểu thứcĐiềuKiện; Tăng/giảm) trước khi thực thi Thực thi trước while (BiểuThứcĐiềuKiện) { { Kiểm tra sau { Khối lệnh; Khối lệnh; Kiểm tra trước } Tăng/ giảm; Khối lệnh; Thực thi sau } Tăng/ giảm; • KhởiTạo; Khởi tạo while(BiểuThứcĐiềuKiện); } for ( ; Biểu thứcĐiềuKiện ; Tăng/giảm) { no Khối lệnh; BTĐK Khởi tạo } Khởi tạo yes no • KhởiTạo; Khối lệnh Khối lệnh BTĐK for ( ; ĐiềuKiện ;) yes { Tăng/ giảm Tăng/ giảm Khối lệnh Khối lệnh; yes no Tăng/giảm; BTĐK Tăng/ giảm } Chuyển for  while Ví dụ : Nhập n là số nguyên for ( Khởi tạo ; BTĐK ; Tăng/Giảm ) dương. Tính tổng S = 1+2+…+n { S=0; for (i = 1; i
  17. Ví dụ : Vẽ LĐ : nhập chiều cao h, CODE xuất hình vuông tương ứng. void main() • Nhập h = 4 { int i, j, h; • Xuất printf("Nhap vao chieu cao h = "); scanf("%d", &h); for (i = 1; i
  18. Bài tập Bài tập 1. Viết chương trình nhập vào n số nguyên. Tính 4 . Viết chương trình nhập chiều cao h. Xuất và in ra tổng các số chẳn của chúng. hình chử nhật tương ứng. 2. Viết chương trình nhập vào n số nguyên. Tính và in ra tổng các số lẽ và chia hết cho 3 của 5. Viết chương trình nhập tháng, năm. Cho chúng . biết tháng đó có bao nhiêu ngày. 3. Viết chương trình nhập 3 số thực. Kiểm tra xem 3 số đó có hợp lại thành 3 cạnh của 1 tam giác hây không? Nếu không phải thì xuất “kg phải là 3 cạnh của tam giác”, còn nếu phải thì cho biết đó là tam giác gì? 103 104 Xin cám ơn Chuong 03- Co ban ve Ngon ngu C 18
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2