Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Long week03-review

775 views

Published on

  • Be the first to comment

  • Be the first to like this

Long week03-review

  1. 1. http://2learner.edu.vn/vle/course/view.php?id=15 Yêu cầu thực hiện ở toàn khóa THẢO LUẬN CÁC CHỦ ĐỀ LIÊN QUAN Yêu cầu thực hiện ở Week 01~ Week 03 1
  2. 2. Hướng dẫn thực hiện đồ án Nội dung nộp  Thực hiện các yêu cầu của phần handouts (ho01, ho02, …)  Các nội dung tự nghiên cứu – bài tập (nếu có) Hình thức nộp  Sử dụng MS. Word để soạn thảo báo cáo – lưu trữ trên 1 file (.doc)  Tên file: Nhom01-bt01.doc, Nhom02-bt01.docx, ….  Nộp online tại trang ACeLS – phần Assignments Lưu ý: Thời hạn yêu cầu nộp bài 2
  3. 3. TRÌNH BÀY MỘT ĐỒ ÁN TRANG BÌA ĐẠI HỌC SƯ PHẠM TP.HỒ CHÍ MINH Khoa CÔNG NGHỆ THÔNG TIN MỤC LỤC Học phần LẬP TRÌNH CƠ BẢN Câu 1 -…………… 1.1. ……………… 1.2. ……………… Câu 2 - …………… 2.1. …………………… 2.1.1. ………………… 2.2.2. ………………… ĐỒ ÁN 01 2.2. ……………………… (Nhom01-bt01.doc) ………………………… TÀI LIỆU THAM KHẢO Nội dung trình bày: PHỤ LỤC 1... 2… Người hướng dẫn: Ths. Lê Đức LongXem thêm hướng dẫn trình bày Sinh viên thực hiện:trong file Hinh thuc bao cao.doc 1. Nguyễn Tấn Đạt – 01.020.085 2. Đỗ Duy Thiện – 01.020.204 Lớp : Tin – K1 3
  4. 4. Trường Đại Học Sư Phạm Tp.HCM Khoa Công Nghệ Thông Tin Bộ môn Kỹ thuật dạy học Lập trình cơ bảnIntroduction to Programming (using C/Pascal) Lê Đức Long 02/2012 Link for Materials: http://www.2learner.edu.vn/ldlongdhsp/Intro2Programming
  5. 5. Một số quy ước trên slide Tắt màn hình máy tính Được dùng máy tính Làm việc theo nhóm Ghi chép bằng văn bản TỰ NGHIÊN CỨU- ĐỌC THÊM 5
  6. 6. Củng cố – ôn tập …Các vấn đề đã học – Week 01 Thực hiện và viết lại bằng báo cáo (.doc) nộp cho thầy – qua hệ thống online Bắt buộc & Điều kiện cần Thực hiện và cài đặt trên máy cá nhân 6
  7. 7. Củng cố – ôn tập …Các vấn đề đã học – Week 02 Thực hiện và viết lại bằng báo cáo (.doc) nộp cho thầy – qua email sau mỗi tuần Điều kiện cần Thực hiện và cài đặt trên máy cá nhân (C/C++/Pascal) 7
  8. 8. Củng cố – ôn tập …Các vấn đề đã học – Week 03 Thực hiện và viết lại bằng báo cáo (.doc) nộp cho thầy – qua email sau mỗi tuần Điều kiện cần Thực hiện và cài đặt trên máy cá nhân (C/C++/Pascal) 8
  9. 9. THUẬT TOÁN LÀ GÌ ? Thuật toán là một tập hợp các hướng dẫn nhằm thực hiện một công việc nào đó. Đối việc giải quyết vấn đề – bài toán , thuật toán được hiểu là một tập hữu hạn các hướng dẫn rõ ràng để người giải bài toán có thể theo đó mà giải quyết được bài toán. Như vậy, thuật toán là một phương pháp thể hiện lời giải của vấn đề, bài toán. Việc nghiên cứu các thuật toán có vai trò rất quan trọng trong khoa học máy tính vì máy tính chỉ giải quyết vấn đề được khi đã có hướng dẫn giải rõ ràng và đúng. Trong khoa học máy tính, thuật toán được định nghĩa là một dãy hữu hạn các bước không mập mờ và có thể thực thi được, quá trình hành động theo các bước này phải dừng và cho được kết quả như mong muốn. 9
  10. 10. Tính chất cơ bản thuật toán Xác định: rõ ràng, không mập mờ và các bước giải khả thi có thể thực thi được  Mập mờ: thiếu thông tin hoặc có nhiều chọn lựa nhưng không đủ điều kiện để quyết định  Thực thi được: xét trong điều kiện hiện tại của bài toán Hữu hạn: số bước là hữu hạn và có tính chất dừng  dễ bị vi phạm nhất  Sau một thời gian thi hành hữu hạn thì phải cho kết quả mong muốn Đúng: với mọi trường hợp của bài toán  Tính chất khó đạt nhất 10
  11. 11. Các đặc trưng khác của thuật toán Đầu vào và đầu ra (Input/Output) : mọi thuật toán đều nhận dữ liệu đầu vào, xử lý nó và cho ra kết quả cuối cùng. Tính hiệu quả (Effectiveness) : dựa trên khối lượng tính toán, không gian và thời gian khi thuật toán được thi hành. Là yếu tố quyết định để đánh giá, chọn lựa cách giải quyết vấn đề – bài toán trên thực tế. Tính tổng quát (Generalliness): áp dụng được cho mọi trường hợp của bài toán. 11
  12. 12. Biểu diễn thuật toán Cách 1: Dùng ngôn ngữ tự nhiên Cách 2: Dùng lưu đồ / Vẽ sơ đồ khối Cách 3: Dùng mã giả 12
  13. 13. HỌC NNLT NHƯ THẾ NÀO ??? 13
  14. 14. Từ mã nguồn …. đến mã thực thi ? Những câu lệnh/chỉ thị do người lập trình .c/.cpp; .pas; .java Mã nguồn viết được lưu thành tập tin dạng văn bản (tuân thủ cú pháp của một NNLT cấp cao) Loại bỏ những khoảng Quá trình chuyển từ tập tin Tiền xử lý trắng thừa, chú thích, … nguồn sang tập tin thực thi Mã nguồn đãđược làm sạch Biên dịch Biên dịch ra mã thực thi (tức mã máy) Liên kết với các thư viện để tạo file thực thi Mã thực thi Mã thực thi Liên kết hoàn chỉnh Tập tin dạng mã máy (.com; .exe) 14
  15. 15. Các bước xây dựng chương trình BÀI TOÁN CHƯƠNG TRÌNH Xác định bài toán Kiểm thửLàm rõ các yêu Xây dựng bộ dữcầu của bài toán liệu thử nghiệm Phân tích bài toán Cài đặt Mô tả các thành phần của chương trình (dữ Thiết kế Lập trình để tạo chương liệu và xử lý) trình nguồn bằng một chương trình NNLT cụ thể Tổ chức đơn vị dữ liệu, đơn vị xử lý 15
  16. 16. Áp dụng mô hình như sau: Xác định bài toán  phân tích  thiết kế  cài đặt  kiểm thử1.Xác định bài toán: làm rõ yêu cầu của bài toán, xác định đầu vào (input) và đầura (output), cũng như các ràng buộc toàn vẹn (nếu có)2.Phân tích bài toán: dựa trên hai thành phần 1.Thành phần dữ liệu: phân tích các thành phần dữ liệu vào/ra, trung gian của bài toán – loại dữ liệu tương ứng 2.Thành phần xử lí: phân tích cách xử lí bài toán bằng công cụ toán học, hoặc bằng cách xử lí thông thường của nghiệp vụ, trình bày dưới dạng ý tưởng giải quyết•Thiết kế chương trình: dựa trên hai đơn vị 1.Đơn vị dữ liệu: thiết kế các thành phần dữ liệu bao gồm tên biến, kiểu dữ liệu, định nghĩa kiểu dữ liệu (nếu có) 2.Đơn vị xử lí: bao gồm •Sơ đồ thủ tục/hàm •Mô tả các thủ tục/hàm (prototype) •Thuật giải tổng quát/chi tiết•Cài đặt: sử dụng một NNLT cụ thể (C/Pascal) để cài đặt•Kiểm thử: xây dựng bộ dữ liệu kiểm thử – nên đề xuất từ 5-10 bộ dữ liệu đểkiểm thử chương trình. Sử dụng chức năng Debug để kiểm lỗi nếu có. Niklaus Wirth (ETH) 16
  17. 17. Nguyên lý thứ nhất !!! Dữ liệu của bài toán sẽ được biểu diễn lại dưới dạng các biến (variable) của chương trình thông qua các quy tắc xác định của NNLT cụ thể (*)(*) Hoàng Kiếm (2000), Giải một bài toán trên máy tính như thế nào – Tập 1, NXB Giáo dục 17
  18. 18. Tập kí tự dùng trong NNLT bậc cao Ngôn ngữ C được xây dựng trên bộ ký tự sau:  26 chữ cái hoa A B C .. Z  26 chữ cái thường a b c .. z  10 chữ số 0 1 2 .. 9  Các ký hiệu toán học +-*/=()  Ký tự gạch nối _  Các ký tự khác . , : ; [ ] {} ! & % # $ ... Dấu cách (space) dùng để tách các từ. Ví dụ: tiếng VIET NAM có 8 ký tự, còn VIETNAM chỉ có 7 ký tự. Tập kí tự dùng trong NNLT Pascal thì sao ??? 18
  19. 19. BIẾN (VARIABLE)  Biến là nơi lưu trữ giá trị – số nguyên, số thực, kí tự, ….  Một biến chỉ có thể lưu được một loại giá trị nhất định  kiểu dữ liệu của biến  Giá trị mà biến đang lưu trữ có thể bị thay đổi nhiều lần trong quá trình chương trình thi hành  Một biến bất kì trong máy tính có 3 thuộc tính:  Tên biến (được đặt tên do người lập trình – gọi là định danh – indentifier)  Kiểu dữ liệu của biến  Giá trị hiện tại mà biến đang lưu trữ  Biến cần phải được khai báo (định nghĩa) trước khi sử dụngVí dụ: STT 50 Biến có tên STT, kiểu số nguyên, đang lưu trữ giá trị là 50 DiemTB 7.8 Biến có tên DiemTB, kiểu số thực, đang lưu trữ giá trị là 7.8 TenSV “Long” Biến có tên TenSV, kiểu chuỗi kí tự, đang lưu trữ một dòng chữ o Ý nghĩa của biến chỉ được hiểu bởi con người, kô có nghĩa với PC; o Tên biến cần gợi nhớ và thống nhất; o Tên biến phải hợp lệ – tuân thủ theo quy ước của NNLT. 19
  20. 20. KIỂU DỮ LIỆU (DATA TYPE) Trong NNLT, loại giá trị mà biến lưu trữ được phân thành những kiểu dữ liệu khác nhau Thông thường, trong một NNLT có các kiểu dữ liệu cơ sở sau:  Kiểu dữ liệu số: gồm có 2 loại • Kiểu dữ liệu số nguyên • Kiểu dữ liệu số thực  Kiểu luận lý (logic)  Kiểu kí tự  Kiểu chuỗi kí tự Mỗi kiểu dữ liệu có 1 miền giá trị khác nhau 20
  21. 21. Kiểu số nguyên  Có nhiều kiểu số nguyên Reading(*)  Tuỳ vào độ lớn của miền giá trị, có:  Số nguyên 8 bit ( 1 byte) -128 0 127 • Loại có dấu: -128 → 127 0 255 • Loại không dấu: 0 → 255  Số nguyên 16 bit (2 byte) • Loại có dấu: - 32,768 → 32,767 • Loại không dấu: 0 → 65,535  Số nguyên 32 bit (4 byte) • Loại có dấu: -2,147,483,648 → 2,147,483,647 • Loại không dấu: 0 → 4,294,967,295  Một số ngôn ngữ lập trình còn hỗ trợ kiểu số nguyên 64 bit, 128 bit  Kiểu số nguyên k bit sẽ chiếm bộ nhớ k bit dữ liệu(*) Lê Đức Long (2005), GT Tin học đại cương ĐHSP – Phần Mã hoá và Biểu diễn dữ liệu trong máy tính 21
  22. 22. Kiểu số thực Có 2 dạng số thực thường gặp Reading(*)  Số thực 32 bit (4 byte) • Miền giá trị: trong khoảng ± 3.4E-38 đến ± 3.4E+38 • Có 8 chữ số có nghĩa sau dấu phẩy  Số thực 64 bit (8 byte) • Miền giá trị: trong khoảng ± 1.7E-308 đến ± 1.7E+308 • Có 16 chữ số có nghĩa sau dấu phẩy  Một số ngôn ngữ lập trình còn hỗ trợ số thực 80 bit (10 byte) Loại Pascal Miền giá trị C Miền giá trị 32 bit real 2.9x10-39…3.4x1039 float 3.4x10-38…3.4x1038 64 bit double 5.0x10-324…1.7x10308 double 1.7x10-308…1.7x10308(*) Lê Đức Long (2005), GT Tin học đại cương ĐHSP – Phần Mã hoá và Biểu diễn dữ liệu trong máy tính 22
  23. 23. Các kiểu dữ liệu khác … Kiểu luận lý (logic): chỉ nhận 1 trong 2 giá trị -True (1) hoặc False (0) Kiểu kí tự: dùng để lưu trữ dữ liệu ở dạng một kí tự - là một trong các ký hiệu của bảng mã ASCII, chiếm 1 byte bộ nhớ (một số NNLT cho phép lưu trữ kí tự mã Unicode chiếm 2 byte bộ nhớ) Kiểu chuỗi kí tự: dùng để lưu trữ một chuỗi kí tự Loại Pascal Miền giá trị C Miền giá trị Logic boolean true / false int 1/0 Kí tự char 256 kí tự char 256 kí tự Chuỗi string[n] n kí tự, mỗi kí tự 1 byte char[n] n kí tự, mỗi kí tự 1 byte o Mọi kiểu dữ liệu dạng số đều hữu hạn và rời rạc; o Hiều biết cách biểu diễn số nguyên, số thực trong máy tính; o Chọn lựa kiểu dữ liệu của biến sao cho phù hợp. 23
  24. 24. The standard keywords TỪ KHÓA DÀNH CHO NGÔN NGỮ C/C++auto extern sizeofbreak float staticcase for structchar goto switchconst if typedefcontinue int uniondefault long unsigneddo register voiddouble return volatileelse short whileenum signed CẦN PHÂN BIỆT GIỮA THUẬT NGỮ TỪ KHÓA (KEYWORD) VỚI ĐỊNH DANH (IDENTIFIER) 24
  25. 25. HẰNG (CONSTANT) Hằng trong chương trình là một giá trị không đổi trong suốt quá trình thi hành Mục đích của hằng là giúp cho chương trình dễ hiểu hơn, hoặc điều chỉnhchương trình dễ dàng hơn Hằng phải được khai báo trước khi sử dụng Hằng gồm 2 thành phần: tên hằng và giá trị gán cho hằng Có các loại hằng sau: o Hằng số: hằng nguyên, hằng thực – Vd: 2, -8, 30, 2.5, -2.0, 1E-3, … o Hằng bool: có 2 giá trị là true và false o Hằng kí tự: có 2 dạng biểu diễn sau  Đặt kí tự trong dấu nháy đơn  Dùng mã ASCII o Pascal: #d (d là mã ASCII ở dạng thập phân) o C: xFF (FF là mã ASCII ở dạng hexa) o Hằng chuỗi kí tự  Pascal, đặt chuỗi kí tự trong dấu nháy đơn – Vd: ‘Duc Long’  C, đặt chuỗi kí tự trong dấu nháy kép – Vd: “Duc Long” 25
  26. 26. Tóm tắt Programmer End-UserBiểu diễn thông tin Vùng nhớ có cấu trúctrong thế giới thực Biến được mô tả bởi một kiểu dữ liệu Số nguyên 4 Biến kiểu số nguyên có giá trị là 4 Phân số 4/3 Biến có kiểu PHANSO Ngày 15/9/2006 Biến có kiểu NgàyBiểu diễn loại thông Cấu trúc dữ liệu đượctin trong thế giới thực Kiểu dữ liệu định nghĩa Kiểu cơ sở – đã tạo sẵn dưới dạng từ khóa trong NNLT Kiểu tự định nghĩa – kiểu do người lập trình tự tạo 26
  27. 27. Cấu trúc tổng quát của ct C 27
  28. 28. Hãy làm phép so sánh ? 28
  29. 29. Câu lệnh – Chú thích (C) Chú thích, -Nhiều dòng /* … */ -Một dòng // Câu lệnh, kết thúc bằng dấu ; 29
  30. 30. LỆNH GÁN (ASSIGNMENT) Lệnh gán dùng để thay đổi giá trị hiện thời của biến Lệnh gán không phải là phép so sánh giữa hai biểu thức, mà là thao tác tínhkết quả biểu thức phía bên phải lệnh gán, sau đó đặt kết quả này vào biến ởphía bên trái lệnh gán. Lệnh gán làm thay đổi giá trị hiện thời của biến và không thể nào lấy lại đượcgiá trị này.Biểu diễn bằng lưu đồ: A BÝ nghĩa: đưa giá trị của biểu thức vế phải (B) gán vào cho biến ở vế trái (A) Cú pháp lệnh gán <biến> := <biểu thức>; <biến> = <biểu thức>; A ←5 A := 5; A = 5; A←B A := B; A = B; A←B+5 A := B + 5; A = B +5; A←A+1 A := A + 1; A = A +1; A ← (A + B) * C + D A := (A + B) * C + D; A = (A + B) * C + D; Cú pháp trong C: <indentifier> = < expression> 30
  31. 31. Phép toán số học Toán tử Pascal CToán tử hai ngôiCộng + +Trừ - -Nhân * *Chia (số thực) / / 5 / 2 = 2.5Chia (số nguyên) DIV / 5 div 2 = 2Chia lấy phần dư MOD % 5 mod 2 = 1Toán tử một ngôiToán tử đổi dấu - - 31
  32. 32. Phép toán so sánh và logic Phép toán Pascal C Nhỏ hơn < < Lớn hơn > > So sánh bằng = == Khác nhau <> != Nhỏ hơn hoặc bằng <= <= Lớn hơn hoặc bằng >= >= Phép not not ! Phép and and && Phép or or ||Cho biết ý nghĩa: A := B; A = B; {trong ngon ngu Pascal} A = B; A == B; // trong ngon ngu C B := (5<7) AND (7<9); {B kiểu Boolean} B = (5<7) && (7<9); // int B x := 5; x = 5; B := (x<1) OR (x>10); B = (x<1) || (x>10); B := (x<1) + (x<2); 32
  33. 33. Một số hàm toán học dựng sẵn Kiểu Kiểu Pascal C Mô tả tham số trả về abs(x) abs(x) Tính trị tuyệt đối Số Cùng kiểu exp(x) exp(x) Tính hàm ex Số Số thực ln(x) log(x) Tính ln Số Số thực round(x) √ Làm tròn phần nguyên Số thực Số nguyên sqr(x) √ Bình phương Số Cùng kiểu sqrt(x) sqrt(x) Căn bậc 2 Số Số thực √ pow(x,y) Tính xy Số, Số Số thực trunc(x) √ Lấy phần nguyên Số thực Số nguyênĐọc thêm : Apendix B. B.4. B.W.Kernirghan & D.M.Ritchie (1988), The C programming language, 2nd Ed., Prentice Hall 33
  34. 34. Biểu thức toán học Toán học Máy tính b2 – 4ac b*b-4*a*c hoặc sqr(b)-4*a*c − b + b − 4ac 2 ((-b)+sqrt(sqr(b)-4*a*c))/(2*a) 2a p( p − a)( p − b)( p − c) sqrt(p*(p-a)*(p-b)*(p-c))[a 2 (b 2 + c 2 ) + 5](7c) (sqr(a)*(sqr(b)+sqr(c))+5)*(7*c) 34
  35. 35. ĐỘ ƯU TIÊN CỦA CÁC TOÁN TỬ + PASCAL C Lời gọi hàm Lời gọi hàm Biểu thức trong ( ) Biểu thức trong ( ) Toán tử NOT Toán tử NOT (!) Toán tử đổi dấu - Toán tử đổi dấu - *, / , DIV, MOD, AND *, / , %, +, - + , - , OR <, <=, >, >= = , <> , < , > , >=, <= == , != && , || Thứ tự tính toán biểu thức: Left  Right Nêu thứ tự thực hiện biểu thức sau: sqr(a)*(sqr(b)+sqr(c))+5)*7+c (a+5)*b+(c/2+b)-10*a*a/2*cXét các biểu thức sau: B := x <1 and x>2; B = x <1 && x>2; // int B, x= 5;Cho x:=5; B kiểu Boolean; B := (x<1) and (x>2); B = (x<1) + (x<2); // int B, x= 0;Làm bài tập C.1, 2, 3. trong B. S. Gottfried (1996), Programming with C, 2nd Ed., SCHAUM’S Outline Series - McGRALL-HILL 35
  36. 36. Nguyên lý thứ hai !!! Chuyển đổi quá trình tính toán của Các cấu trúc của bài toán chương trình MỌI QUÁ TRÌNH TÍNH TOÁN ĐỀU CÓ THỂ MÔ TẢ VÀ THỰC HIỆN DỰA TRÊN BA CẤU TRÚC CƠ BẢN:  CẤU TRÚC TUẦN TỰ  CẤU TRÚC RẼ NHÁNH  CẤU TRÚC LẶPC. Bohm & G. Jacopini (1966), Flow Diagrams, Turing Machines and Languages With Only Two FormationRules. In Communications of ACM, Vol.9, Number 5, May 1966. 36
  37. 37. Cấu trúc tuần tự  Cấu trúc mặc định trong mọi ngôn ngữ lập trình  Các thao tác được thực hiện tuần tự từ thao tác đầu tiên đến thao tác cuối cùng Ví dụ: thuật toán có n bước, thì việc thi hành sẽ tiến hành tuần tự từ bước thứ 1 đến bước thứ n Bắt đầu Lệnh 1 B.1 a, b,c,x Lệnh 2 Lệnh 3 B.2 Px ß a*sqr(x)+b*x+c Lệnh n B.3 PxSơ đồ khối của cấu trúc tuần tự Kết thúc 37
  38. 38. Câu lệnh nhập/xuấtReadln(arg1, arg2, …, argn) scanf(control string, arg1, arg2, …, argn)Read(arg1, arg2, …, argn)Lệnh Readln, sau khi gán xong cho tất cả các biến trongdanh sách, con trỏ sẽ được chuyển sang đầu hàng kế Mỗi biến phải đứng trướctiếp. Còn lệnh read thì không chuyển. bởi 1 dấu &, nhưng với biếnLệnh readln không tham số dùng để chờ người dùng chuỗi, mảng thì kô có.nhấn phím EnterWriteln(arg1, arg2, …., argn)Write(arg1, arg2, …, argn)Sau khi thực hiện lệnh Writeln, con trỏ sẽ được chuyểnsang đầu hàng kế tiếp - Lệnh Write thì không chuyển. printf(control string, arg1, arg2, …, argn)Lệnh Writeln không tham số dùng để chuyển con trỏsang dòng kế tiếp. Mã đặc tả Kiểu dữ liệu Tác dụng %c char 1 KұS [ Xҩt 1 kí tự có mã ASCII tương ứng S %d Số nguyên 1 KұS [ Xҩt 1 số nguyên S %f Số thực 1 KұS [ Xҩt 1 số thực S %s Chuỗi kí tự 1 KұS [ Xҩt 1 chuỗi kí tự SXem thêm C.4. trong B. S. Gottfried (1996), Programming with C, 2nd Ed., SCHAUM’S Outline Series - McGRALL-HILL 38
  39. 39. Quan sát và nhận xét …Xem thêm C.4. trong B. S. Gottfried (1996), Programming with C, 2nd Ed., SCHAUM’S Outline Series - McGRALL-HILL 39
  40. 40. Tóm tắt Programmer End-UserCác bước thực hiện của 1 Những chỉ thị/chỉ dẫnnghiệp vụ trong thực tế Lệnh trong chương trình nguồnMột nghiệp vụ trong Bao gồm các lệnh để thực hiệnthực tế Hàm xử lý trọn vẹn 1 nghiệp vụ Hệ thống những hàm xử lýMột tổ chức bao gồm Chương trình để chung 1 chỗnhiều nghiệp vụ 40
  41. 41. Bài tập / thực hành (C/Pascal) 41
  42. 42. C.2. Các thành phần cơ bản Một số khái niệm khác – đối với NNLT C (không có trong Pascal) 42
  43. 43. Phép toán trên bitPhép toán Kí hiệu  Ví dụ: int x = 5; // x = 101bPhép AND & int y = 4; // y = 100bPhép OR |Phép XOR ^ int r1 = x & y; // r1 = 100b Bù bit ~ int r2 = x | y; // r2 = 101b int r3 = ~x; // r3 = 010b Dịch trái << int r4 = x << 3; // r4 = 101000bDịch phải >> int r5 = x >> 1; // r5 = 10b 43
  44. 44. Chuyển đổi kiểu dữ liệu (Type Casting) Trường hợp 1:Ví dụ: float f = 3.5; int i = 2; Biểu thức f + i thì i sẽ tự động chuyển sang kiểu float Khi hai toán hạng trong một phép toán khác kiểu dữ liệu thì kiểu dữ liệu thấp sẽ nâng thành kiểu dữ liệu caoVí dụ: float f = 3 / 2; // Kết quả sẽ là 1 float f = 3.0 / 2; // Kêt quả sẽ là 1.5 Trường hợp 2: Trong lập trình, đôi lúc cần phải chuyển từ kiểu này sang kiểu khác (ép kiểu)Cú pháp: (<data type>) expressionVí dụ: float f = (float) 3 / 2; // Kết quả sẽ là 1.5 Cú pháp này sẽ chuyển số nguyên 3 thành số thực 3.0 float f = 5.5; Biểu thức ((int) f) % 2 sẽ chuyển giá trị của f thành 5 (mất phần lẻ) int i = 7; float f = 8.5; Biểu thức (i + f) % 4 bị sai !!!!! TẠI SAO ??? Phải viết lại là ((int) (i + f) % 4 44
  45. 45. Phép gán mở rộng 5 phép gán mở rộng: + = ; - = ; * = ; / = ; % =Cú pháp chung: ví dụ như + = expression 1 + = expression 2Nghĩa là tương đương: expression 1 = expression 1 + expression 2 Ví dụ: Giả sử int i = 5; j = 7; float f = 5.5; g = -3.25 45
  46. 46. Các phép tăng/giảm 1 đơn vịPhép tăng: ++<identifier> ; <identifier>++Phép giảm: --<identifier> ; <identifier>-- Lưu ý:  Phép toán ++ (hay --) đứng trước tên biến sẽ thực hiện trước  Phép toán ++ (hay --) đứng sau tên biến sẽ thực hiện sau Ví dụ: int i = 3; int t1 = i++; //gán t1 bằng i trước rồi mới tăng i int t2 = ++i; //tăng i rồi mới gán cho t2 ….. i ++; // i = i + 1; ++i; // i = i + 1; 46
  47. 47. Đức Long - 2012
  48. 48. Biểu diễn số thực trong máy tính Có 2 dạng: dạng dấu chấm tĩnh và dạng dấu chấm động Dạng dấu chấm động được sử dụng phổ biến.Biểu diễn dưới dạng dấu chấm động Mọi số thực có thể được phân tích dưới dạng: Để biểu diễn số thực, chỉ cần lưu số nguyên b, và thập phân của của số a (cũng là số nguyên) Với ví dụ trên, số thực 1 cần lưu 2 số nguyên là +123456789 và +3 và số thực 2 cần lưu 2 số nguyên là +28 và -2 Trong đó:  Phần định trị: phần thập phân của số a  Phần luỹ thừa: số b 48
  49. 49. Biểu diễn số thực trong máy tính Trong máy tính, người ta chọn c = 2 Số thực k bit sẽ có m bit dùng để lưu phần định trị và n = k-m bit dùng để lưu phần lũy thừa Số thực k bit có giá trị tuyệt đối lớn bao nhiêu tùy thuộc vào m bit nhiều hay ít Số thực k bit chính xác bao nhiêu chữ số tùy thuộc vào n bit nhiều hay ít  Số thực 32 bit dùng 8 bit cho phần lũy thừa và 24 bit cho phần định trị  Số thực 64 bit dùng 12 bit cho phần lũy thừa và 52 bit cho phần định trị 49

×