text:
Giải nhanh bài toán hóa học - Phương pháp Bảo toàn nguyên tố
Chia sẻ: Do Thanh Tam | Ngày: | Loại File: PPT | Số trang:26
lượt xem 532
download
Giải nhanh bài toán hóa học - Phương pháp Bảo toàn nguyên tố
Định luật bảo toàn nguyên tố (BTNT): “Trong các phản ứng hóa học thông thường, các nguyên tố luôn được bảo toàn”. • Điều này có nghĩa là : Tổng số mol nguyên tử của một nguyên tố X bất kì trước và sau phản ứng là luôn bằng nhau. Chú ý : • Để áp dụng tốt phương pháp này, ta nên hạn chế viết phương trình phản ứng mà thay vào đó nên viết sơ đồ phản ứng (sơ đồ hợp thức, có chú ý hệ số), biểu diễn các biến đổi cơ bản của chất (nguyên tố) quan tâm. • Nên quy về...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Giải nhanh bài toán hóa học - Phương pháp Bảo toàn nguyên tố
- Chuyên đề: Phương pháp giải nhanh bài toán Hóa Học Phần 3. Phương pháp Bảo toàn nguyên tố
- Phần 3. Phương pháp bảo toàn nguyên tố Nội dung A. Nội dung phương pháp và những chú ý quan trọng B. Các thí dụ minh họa C. Bài tập luyện tập
- A. Nội dung phương pháp và những chú ý quan trọng Nội dung phương pháp : • Định luật bảo toàn nguyên tố (BTNT): “Trong các phản ứng hóa học thông thường, các nguyên tố luôn được bảo toàn”. • Điều này có nghĩa là : Tổng số mol nguyên tử của một nguyên tố X bất kì trước và sau phản ứng là luôn bằng nhau. Chú ý : • Để áp dụng tốt phương pháp này, ta nên hạn chế viết phương trình phản ứng mà thay vào đó nên viết sơ đồ phản ứng (sơ đồ hợp thức, có chú ý hệ số), biểu diễn các biến đổi cơ bản của chất (nguyên tố) quan tâm. • Nên quy về số mol nguyên tố (nguyên tử). • Đề bài thường cho (hoặc qua dữ kiện bài toán sẽ tính được) số mol của nguyên tố quan tâm → lượng chất (chú ý hiệu suất phản ứng, nếu có).
- B. Các thí dụ minh họa Thí dụ 1 Hòa tan hỗn hợp gồm 0,2 mol Fe và 0,1 mol Fe2O3 vào dung dịch HCl dư được dung dịch D. Cho dung dịch D tác dụng với NaOH dư thu được kết tủa. Lọc kết tủa, rửa sạch đem nung trong không khí đến khối lượng không đổi thu được m gam chất rắn. Giá trị của m là A. 16,0. B. 30,4. C. 32,0. D. 48,0. Hướng dẫn giải Sơ đồ phản ứng : Fe HCl FeCl NaOH Fe(OH) 2 to Fe2O 3 D FeCl 2 Fe(OH) 3 Fe2O 3 3 Theo BTN T nFe(Fe2O 3 ,r¾n) nFe(Fe) nFe(Fe2O 3 ,®Çu) : = + ⇒ nFe(Fe2O 3 ,r¾n) 2 1. = 4 ol = 0, +0, 2 0, m 0,4 ⇒ nFe2O 3 (r¾n) = 2 ol m m Fe2O 3 (r¾n) 2. = ⇒ = 0, m = 0, 160 = gam 32 2 → ¸p C . § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 2 Hòa tan hoàn toàn hỗn hợp gồm 0,27 gam bột nhôm và 2,04 gam bột Al2O3 trong dung dịch NaOH dư thu được dung dịch X. Cho CO2 dư tác dụng với dung dịch X thu được kết tủa Y, nung Y ở nhiệt độ cao đến khối lượng không đổi thu được chất rắn Z. Biết hiệu suất các phản ứng đều đạt 100%. Khối lượng của Z là A. 2,04 gam. B. 2,31 gam. C. 3,06 gam. D. 2,55 gam. Hướng dẫn giải Sơ đồ phản ứng : Al NaOH CO2 to NaAlO2 Al(OH)3 Al2O3 Al2O3 Theo BTN T nAlAlO 3 ,Z) nAlAl nAlAlO 3 ,®Çu) : ( 2 = ( ) + ( 2 0,27 2, 04 0,05 ⇒ nAlAlO 3 ,Z) ( 2 = + × 2 = 05 ol nAlO 3 (Z) 0, m ⇒ 2 = = 025 ol 0, m 27 102 2 ⇒ m Z m AlO 3 (Z) 025. = 2 = 0, 102 = 55 → § ¸n 2, gam ¸p D .
- B. Các thí dụ minh họa (tt) Thí dụ 3 Đun nóng hỗn hợp bột gồm 0,06 mol Al, 0,01 mol Fe3O4, 0,015 mol Fe2O3 và 0,02 mol FeO một thời gian. Hòa tan hoàn toàn hỗn hợp rắn sau phản ứng bằng dung dịch HCl dư, thu được dung dịch X. Thêm NH3 vào X cho đến dư, lọc kết tủa, đem nung ngoài không khí đến khối lượng không đổi thu được m gam chất rắn. Giá trị của m là A. 9,46. B. 7,78. C. 6,40. D. 6,16. Hướng dẫn giải Al AlCl3 Fe3O4 NH 3 Al(OH)3 Al2O 3 to r¾n HCl FeCl 2 to Sơ đồ : Fe2O3 Fe(OH)2 Fe2O3 FeO FeCl 3 Fe(OH)3 1 0, 06 Theo BTN T nAlO 3 nAl = : 2 = = 03 ol m AlO 3 03. 0, m ⇒ = 0, 102 3, gam = 06 2 2 2 1 1 M Ætkh¸c nFe2O 3 (r¾n) ∑ nFe(®Çu) = ( 01. + 015. + 02)= 04 ol : = 0, 3 0, 2 0, 0, m 2 2 ⇒ m Fe2O 3 (r¾n) 04. = 0, 160 6, gam = 4 ⇒ m AlO 3 Fe2O 3 (r¾n) = 06 6, = 46 = m 2 +m → § ¸n 3, + 4 9, gam ¸p A.
- B. Các thí dụ minh họa (tt) Thí dụ 4 Đốt cháy 6,72 gam bột Fe trong không khí thu được hỗn hợp X gồm FeO, Fe3O4, Fe2O3. Để hòa tan X cần dùng vừa hết 255 ml dung dịch chứa HNO3 2M, thu được V lít khí NO2 (sản phẩm khử duy nhất, đo ở đktc). Giá trị của V là A. 5,712. B. 3,360. C. 8,064. D. 6,048. Hướng dẫn giải O2 FeO HNO3 Sơ đồ biến đổi : Fe Fe3O4 Fe(NO 3) 3 + NO2 Fe2O3 6, 72 BTN T Fe(N O 3 )3 Fe = Theo víi n Fe: =n = 12 ol 0, m 56 BTN T :nN (H N O 3 ) N (Fe(N O 3 )3 ) + nN (N O 2 ) ⇒ nN (N O 2 ) N (H N O 3 ) − nN (Fe(N O 3 )3 ) Theo víi N =n =n = 255. − 0, 3 = 0, m ol ⇒ nN O 2 N (N O 2 ) 0, =n 2 12. 15 ⇒ V N O 2 0, 22, = 3, = V = 15. 4 360 Ý lt → ¸p B. § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 5 Lấy a mol NaOH hấp thụ hoàn toàn 2,64 gam khí CO2, thu được đúng 200 ml dung dịch D. Trong dung dịch D không còn NaOH và nồng độ của ion CO32− là 0,2 mol/l. a có giá trị là A. 0,12. B. 0,08. C. 0,06. D. 0,10. Hướng dẫn giải Na2CO 3 (x mol) Sơ đồ biến đổi : NaOH +CO2 NaHCO 3 (y mol) BTN T :nC (C O 2 ) C (N a2C O 3 ) +nC (N aH C O 3 ) ⇒ nC (N aH C O 3 ) C (C O 2 ) − nC (N a2C O 3 ) víi C =n =n ⇒ y nN aH C O 3 C (N aH C O 3 ) nC O 2 = =n = −n N a2C O 3 2, = 64 − 0,2. 2 0,02 ol 0, = m 44 BTN T a :nN a(N aO H ) N a(N a2C O 3 ) + nN a(N aH C O 3 ) = N a2C O 3 + nN aH C O 3 víi N =n 2n ⇒ a N a(N aO H ) 2. 2. 2 + 0, = 10 ol =n = 0, 0, 02 0, m → ¸p D . § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 6 Hoà tan hoàn toàn hỗn hợp gồm x mol FeS2 và y mol Cu2S vào axit HNO3 (vừa đủ), thu được dung dịch X (chỉ chứa hai muối sunfat) và khí duy nhất NO. Tỉ số của x/y là A. 1/3. B. 1/2. C. 2/1. D. 3/1. Hướng dẫn giải D o chØcã uèisunf X m dÞ kh« cßn N − at⇔ dung ch ng gèc O 3 S¬ bi ®æi → Fe SO 3 ( ®å Õn 2FeS 2 2 ( 4 ) 1) : x 5x 0, → 2C C u2S uSO 4 ( 2) 2y y D ung ch c¸c on Fe3+ ,C u2+ SO 2− dÞ chØcã i : vµ 4 BTN T :2x + y = 3. 5x 2y 5x = y ⇒ y = 2/ Theo víi S 0, + ⇒ 0, x/ 1 → ¸p C . § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 7 Đốt cháy hoàn toàn m gam hỗn hợp X gồm CH4, C3H6 và C4H10 thu được 4,4 gam CO2 và 2,52 gam H2O, m có giá trị là A. 1,48. B. 2,48. C. 1,34. D. 1,82. Hướng dẫn giải CH4 O2 Sơ đồ biến đổi : C3H6 CO2 + H2O C4H10 N hËn X = C (X) +m H (X) = C (C O 2 ) +m H (H 2O ) xÐt:m = m m m 4,4 2,52 ⇒ m ×12+ = × 2 1, gam = 48 44 18 → ¸p A. § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 8 Đốt cháy một hỗn hợp hiđrocacbon X thu được 2,24 lít CO2 (đktc) và 2,7 gam H2O. Thể tích O2 đã tham gia phản ứng cháy (đktc) là A. 2,80 lít. B. 3,92 lít. C. 4,48 lít. D. 5,60 lít. Hướng dẫn giải Theo BTN T : víi O 2,24 2,7 =n = nO (O 2 ) O (C O 2 ) +nO (H 2O ) × 2+ = 35 0, m ol 22,4 18 1 0,35 ⇒ O 2 nO n = = = 175 ol O 2 175. 4 3, lt 0, m V = 0, ⇒ 22, = 92 Ý 2 2 → ¸p B. § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 9 Tiến hành crackinh ở nhiệt độ cao 5,8 gam butan. Sau một thời gian thu được hỗn hợp khí X gồm CH4, C2H6, C2H4, C3H6 và C4H10. Đốt cháy hoàn toàn X trong khí oxi dư, rồi dẫn toàn bộ sản phẩm sinh ra qua bình đựng H2SO4 đặc. Độ tăng khối lượng của bình H2SO4 đặc là A. 9,0 gam. B. 4,5 gam. C. 18,0 gam. D. 13,5 gam. Hướng dẫn giải CH4 C2H6 O2 crackinh Sơ đồ phản ứng : C 4H 10 X C2H4 H 2O C3H6 C4H10 § é ¨ng îng b × H 2SO 4 nh µ 2O t khèil cña nh chÝ l H bÞ hÊp hô t 5,8 1 1,0 ⇒ H (H 2O ) H (C 4H10 ) = ×10 = 0 ol H 2O nH (H 2O ) = = 5 ol n =n 1, m n = ⇒ 0, m 58 2 2 ⇒ H 2O 5. = 0 m = 0, 18 9, gam ¸p A. → § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 10 Đốt cháy hoàn toàn m gam hỗn hợp hai rượu đơn chức cùng dãy đồng đẳng cần dùng vừa đủ V lít khí O2 (đktc), thu được 10,08 lít CO2 (đktc) và 12,6 gam H2O. Giá trị của V là A. 17,92. B. 4,48. C. 15,12. D. 25,76. Hướng dẫn giải 10, 08 12,6 = C ã nC O 2 : = 45 ol H 2O 0, m n = ; = 7 ol 0, m 22, 4 18 N hËn xÐt: n =n − 0, − 0, = 0, m +)nH 2O nC O 2 ⇔ r îu H 2O nC O 2 = 7 45 25 ol > +)r îu chøc r îu O (r îu) = 25 ol ®¬n ⇔n =n 0, m Theo BTN T víi : O nO (O 2 ) O (C O 2 ) + nO (H 2O ) − O (r îu) 0, + 7 25 35 ol =n n = 2. 45 0, − 0, = 1, m 1,35 ⇒ O 2 V = × 22, = 12 Ý ¸p C . 4 15, lt→ § ¸n 2
- B. Các thí dụ minh họa (tt) Thí dụ 11 Đun nóng 7,6 gam hỗn hợp A gồm C2H2, C2H4 và H2 trong bình kín với xúc tác Ni thu được hỗn hợp khí B. Đốt cháy hoàn toàn hỗn hợp B, dẫn sản phẩm cháy thu được lần lượt qua bình 1 đựng H2SO4 đặc, bình 2 đựng Ca(OH)2 dư thấy khối lượng bình 1 tăng 14,4 gam. Khối lượng tăng lên ở bình 2 là A. 6,0 gam. B. 9,6 gam. C. 35,2 gam. D. 22,0 gam. Hướng dẫn giải C 2H 2 O2 C 2H 4 Ni Sơ đồ phản ứng : B CO2 + H 2O H2 14, 4 = 14, gam ⇒ H 2O m H 2O 4 n = 8 ol m H (H 2O ) 8. = 6 = 0, m ⇒ = 0, 2 1, gam 18 xÐt: = m + ⇒ m = m − m 7, − 1, 6, gam N hËn m A C m H C A H = 6 6 = 0 6,0 ⇒ C O 2 nC 5 ol C O 2 5. = gam ¸p D . n = = = 0, m m ⇒ = 0, 44 22 → § ¸n 12
- B. Các thí dụ minh họa (tt) Thí dụ 12 Đốt cháy hoàn toàn 0,1 mol anđehit đơn chức X cần dùng vừa đủ 12,32 lít khí O2 (đktc), thu được 17,6 gam CO2. X là anđehit nào dưới đây ? A. CH≡ C− 2− CH CHO. B. CH3− 2− 2− CH CH CHO. C. CH2=CH− 2− CH CHO. D. CH2=C=CH−CHO. Hướng dẫn giải N hËn an®ehi xÐt: chøc an®ehi O (an®ehi) = 1m ol t®¬n ⇔n t=n t 0, Theo = n + −n BTN T nO (H 2O ) O (X) nO (O 2 ) O (C O 2 ) víi : O ⇒ H 2O nO (H 2O ) 1+ n = = 0, 12,32 − 17,6 × 2 = 4 ol × 2 0, m 22,4 44 t : = = 0, m an®ehi l no,®¬n N hËn hÊy nH 2O nC O 2 4 ol ⇒ tX µ chøc ⇒ l C H 3C H 2C H 2C H O ¸p B. X µ → § ¸n
- C. Bài tập luyện tập Bài tập 1 Hỗn hợp chất rắn X gồm 0,1 mol Fe2O3 và 0,1 mol Fe3O4. Hòa tan hoàn toàn X bằng dung dịch HCl dư, thu được dung dịch Y. Cho NaOH dư vào Y, thu được kết tủa Z. Lọc lấy kết tủa, rửa sạch rồi đem nung trong không khí đến khối lượng không đổi thu được m gam chất rắn T. Giá trị của m là A. 32,0. B. 16,0. C. 39,2. D. 40,0. Hướng dẫn giải Fe2O3 HCl FeCl NaOH Fe(OH) to Y FeCl2 Z Fe(OH)2 Fe2O3 Sơ đồ : Fe3O4 3 3 Theo BTN T nFe(T) nFe(Fe2O 3 ,®Çu) nFe(Fe3O 4 ,®Çu) : = + ⇒ nFe(T) 1. +0, 3 = 5 ol = 0, 2 1. 0, m 0,5 ⇒ nFe2O 3 (T) = 25 ol m m Fe2O 3 (T) 25. = 0, m ⇒ = = 0, 160 = gam 40 2 → ¸p D . § ¸n
- C. Bài tập luyện tập Bài tập 2 (Đề CĐ Khối A – 2007) Cho 4,48 lít khí CO (ở đktc) từ từ đi qua ống sứ nung nóng đựng 8 gam một oxit sắt đến khi phản ứng xảy ra hoàn toàn. Khí thu được sau phản ứng có tỉ khối so với hiđro bằng 20. Công thức của oxit sắt và phần trăm thể tích của khí CO2 trong hỗn hợp khí sau phản ứng là A. FeO; 75%. B. Fe2O3; 75%. C. Fe2O3; 65%. D. Fe3O4; 75%. Hướng dẫn giải Ph¶n : xO y C O + O 2 1)hay O [ ]→ O 2 2) øng Fe + → Fe C ( : C + O C ( 4,48 nkhÝsau nkhÝtr íc = = = 2 ol 0, m 22,4 l : m − T¨ng ¶m îng m O (FexO y ) = khÝsau m khÝtr íc gi khèi ⇒ O (FexO y ) = 2. 2 − 28. 2 = 4 2,4 m 20. 0, 0, 2, gam nO (FexO y ) = 15 ol ⇒ = 0, m 16 ⇒ m Fe(FexO y ) 0 − 2, = 6 5,6 = 8, 4 5, gam ⇒ nFe(FexO y ) = 1m ol = 0, 56
- C. Bài tập luyện tập Bài tập 2 (Đề CĐ Khối A – 2007) (tt) Cho 4,48 lít khí CO (ở đktc) từ từ đi qua ống sứ nung nóng đựng 8 gam một oxit sắt đến khi phản ứng xảy ra hoàn toàn. Khí thu được sau phản ứng có tỉ khối so với hiđro bằng 20. Công thức của oxit sắt và phần trăm thể tích của khí CO2 trong hỗn hợp khí sau phản ứng là A. FeO; 75%. B. Fe2O3; 75%. C. Fe2O3; 65%. D. Fe3O4; 75%. Hướng dẫn giải (tt) x 0, 1 2 ⇒ = = ⇒ tl Fe oxi µ 2O 3 y 0,15 3 nguyªn è nC O 2 = O (Fe2O 3 ) = 15 ol B¶o oµn t t : n 0, m 0, 15 ⇒ VC O 2 = % ×100% = 75% 0,2 → ¸p B. § ¸n
- C. Bài tập luyện tập Bài tập 3 (Đề ĐH Khối A – 2007) Hấp thụ hoàn toàn 2,688 lít khí CO2 (ở đktc) vào 2,5 lít dung dịch Ba(OH)2 nồng độ a mol/l, thu được 15,76 gam kết tủa. Giá trị của a là A. 0,048. B. 0,032. C. 0,04. D. 0,06. Hướng dẫn giải Sơ đồ phản ứng : Ba(OH)2 + CO2 → BaCO3 + Ba(HCO3)2 2,688 15, 76 = nC O 2 = 12 ol BaC O 3 0, m n ; = = 08 ol 0, m 22, 4 197 Theo BTN T :nC (C O 2 ) = C (BaC O 3 ) nC (Ba(H C O 3 )2 ) víi C n + ⇒ C (Ba(H C O 3 )2 ) = C (C O 2 ) − nC (BaC O 3 ) = C O 2 n n n −n BaC O 3 = 12 − 0, = 0, m ol 0, 08 04 0,04 ⇒ Ba(H C O 3 )2 = n = 0, m ol 02 2 Theo BTN T :nBa(Ba(O H )2 ) = Ba(BaC O 3 ) nBa(Ba(H C O 3 )2 ) víi Ba n + ⇒ Ba(O H )2 = BaC O 3 nBa(H C O 3 )2 = 08 + 0, = 0, m ol n n + 0, 02 10 0, 10 ⇒ a = = 04 oll § ¸p C . 0, m / → ¸n 2,5
- C. Bài tập luyện tập Bài tập 4 (Đề ĐH Khối A – 2007) Hoà tan hoàn toàn hỗn hợp gồm 0,12 mol FeS2 và a mol Cu2S vào axit HNO3 (vừa đủ), thu được dung dịch X (chỉ chứa hai muối sunfat) và khí duy nhất NO. Giá trị của a là A. 0,04. B. 0,12. C. 0,075. D. 0,06. Hướng dẫn giải X m at⇔ dung ch D o chØcã uèisunf cßn gèc − dÞ kh«ng N O 3 S¬ bi ®æi → Fe SO 3 ( ®å Õn 2FeS 2 2 ( 4 ) 1) : 0, 0, 12 06 → 2C C u2S uSO 4 ( 2) 2a a D ung ch c¸c on Fe3+ ,C u2+ SO 2− dÞ chØcã i : vµ 4 BTN T : 0, + a = 3. 06 2a = 0, Theo víi 2. 12 S 0, + ⇒ a 06 → ¸p D . § ¸n
CÓ THỂ BẠN MUỐN DOWNLOAD
-
10 phương pháp giải nhanh trắc nghiệm hóa học và 25 đề thi thử tuyển sinh đại học và cao đẳng
299 p | 4535 | 1637
-
Chuyên đề 11 phương pháp giải nhanh bài tập Hóa học THPT (Tập 1)
43 p | 1559 | 1325
-
Giải nhanh bài toán hóa học - Phương pháp bảo toàn khối lượng, tăng giảm khối lượng
37 p | 1279 | 538
-
Giải nhanh bài toán hóa học - Phương pháp bảo toàn electron
36 p | 925 | 337
-
Áp dụng phương pháp bảo toàn nguyên tố cho các bài tập hoá trong đề thi ĐH và CĐ từ năm 2007 đến năm 2009
11 p | 436 | 219
-
Giải nhanh bài toán hóa học - Phương pháp bảo toàn điện tích
27 p | 509 | 208
-
Hướng dẫn giải nhanh bài tập hóa học
14 p | 309 | 118
-
Các phương pháp giải nhanh bài toán Hóa học - GV. Đỗ Xuân Hưng
77 p | 217 | 112
-
Các công thức giải nhanh trắc nghiệm Hóa học hiệu quả
54 p | 217 | 84
-
Các phương pháp giải nhanh Hóa học
200 p | 219 | 78
-
Phương pháp giải bài toán Hóa vô cơ - Phương pháp bảo toàn khối lượng
6 p | 139 | 48
-
MỘT SỐ PHƯƠNG PHÁP GIẢI NHANH MÔN HÓA HỌC
72 p | 196 | 35
-
Phương pháp giải toán Hóa học qua các kì thi ĐH - CĐ từ năm 2010 - 2012
25 p | 63 | 23
-
21 kỹ thuật để giải siêu nhanh bài tập hóa học
4 p | 55 | 22
-
Các suy luận để giải nhanh bài tập hóa học
7 p | 46 | 12
-
Phương pháp giải bài tập trắc nghiệm môn: Hóa học
71 p | 22 | 8
-
Các công thức giải nhanh trắc nghiệm Hóa học (5tr)
5 p | 36 | 6

markdown:
# Giải nhanh bài toán hóa học - Phương pháp Bảo toàn nguyên tố
Chia sẻ: Do Thanh Tam | Ngày: | Loại File: PPT | Số trang:26
lượt xem 532
download
![](http://image1.tailieu.vn/document/thumbnail/2010/20101113/kenji_1992/80x100/sc_lephamthanh_hoa_phuong_phap_giai_nhanh_bai_tap_hoa_hoc_phan3_phuong_phap_bao_toan_nguyen_to_3832.jpg)
##
Giải nhanh bài toán hóa học - Phương pháp Bảo toàn nguyên tố
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](http://static1.tailieu.vn/b2013az/templates/version1/default/images/down16x21.png)
Định luật bảo toàn nguyên tố (BTNT): “Trong các phản ứng hóa học thông thường, các nguyên tố luôn được bảo toàn”. • Điều này có nghĩa là : Tổng số mol nguyên tử của một nguyên tố X bất kì trước và sau phản ứng là luôn bằng nhau. Chú ý : • Để áp dụng tốt phương pháp này, ta nên hạn chế viết phương trình phản ứng mà thay vào đó nên viết sơ đồ phản ứng (sơ đồ hợp thức, có chú ý hệ số), biểu diễn các biến đổi cơ bản của chất (nguyên tố) quan tâm. • Nên quy về...
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: Giải nhanh bài toán hóa học - Phương pháp Bảo toàn nguyên tố
- Chuyên đề: Phương pháp giải nhanh bài toán Hóa Học Phần 3. Phương pháp Bảo toàn nguyên tố
- Phần 3. Phương pháp bảo toàn nguyên tố Nội dung A. Nội dung phương pháp và những chú ý quan trọng B. Các thí dụ minh họa C. Bài tập luyện tập
- A. Nội dung phương pháp và những chú ý quan trọng Nội dung phương pháp : • Định luật bảo toàn nguyên tố (BTNT): “Trong các phản ứng hóa học thông thường, các nguyên tố luôn được bảo toàn”. • Điều này có nghĩa là : Tổng số mol nguyên tử của một nguyên tố X bất kì trước và sau phản ứng là luôn bằng nhau. Chú ý : • Để áp dụng tốt phương pháp này, ta nên hạn chế viết phương trình phản ứng mà thay vào đó nên viết sơ đồ phản ứng (sơ đồ hợp thức, có chú ý hệ số), biểu diễn các biến đổi cơ bản của chất (nguyên tố) quan tâm. • Nên quy về số mol nguyên tố (nguyên tử). • Đề bài thường cho (hoặc qua dữ kiện bài toán sẽ tính được) số mol của nguyên tố quan tâm → lượng chất (chú ý hiệu suất phản ứng, nếu có).
- B. Các thí dụ minh họa Thí dụ 1 Hòa tan hỗn hợp gồm 0,2 mol Fe và 0,1 mol Fe2O3 vào dung dịch HCl dư được dung dịch D. Cho dung dịch D tác dụng với NaOH dư thu được kết tủa. Lọc kết tủa, rửa sạch đem nung trong không khí đến khối lượng không đổi thu được m gam chất rắn. Giá trị của m là A. 16,0. B. 30,4. C. 32,0. D. 48,0. Hướng dẫn giải Sơ đồ phản ứng : Fe HCl FeCl NaOH Fe(OH) 2 to Fe2O 3 D FeCl 2 Fe(OH) 3 Fe2O 3 3 Theo BTN T nFe(Fe2O 3 ,r¾n) nFe(Fe) nFe(Fe2O 3 ,®Çu) : = + ⇒ nFe(Fe2O 3 ,r¾n) 2 1. = 4 ol = 0, +0, 2 0, m 0,4 ⇒ nFe2O 3 (r¾n) = 2 ol m m Fe2O 3 (r¾n) 2. = ⇒ = 0, m = 0, 160 = gam 32 2 → ¸p C . § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 2 Hòa tan hoàn toàn hỗn hợp gồm 0,27 gam bột nhôm và 2,04 gam bột Al2O3 trong dung dịch NaOH dư thu được dung dịch X. Cho CO2 dư tác dụng với dung dịch X thu được kết tủa Y, nung Y ở nhiệt độ cao đến khối lượng không đổi thu được chất rắn Z. Biết hiệu suất các phản ứng đều đạt 100%. Khối lượng của Z là A. 2,04 gam. B. 2,31 gam. C. 3,06 gam. D. 2,55 gam. Hướng dẫn giải Sơ đồ phản ứng : Al NaOH CO2 to NaAlO2 Al(OH)3 Al2O3 Al2O3 Theo BTN T nAlAlO 3 ,Z) nAlAl nAlAlO 3 ,®Çu) : ( 2 = ( ) + ( 2 0,27 2, 04 0,05 ⇒ nAlAlO 3 ,Z) ( 2 = + × 2 = 05 ol nAlO 3 (Z) 0, m ⇒ 2 = = 025 ol 0, m 27 102 2 ⇒ m Z m AlO 3 (Z) 025. = 2 = 0, 102 = 55 → § ¸n 2, gam ¸p D .
- B. Các thí dụ minh họa (tt) Thí dụ 3 Đun nóng hỗn hợp bột gồm 0,06 mol Al, 0,01 mol Fe3O4, 0,015 mol Fe2O3 và 0,02 mol FeO một thời gian. Hòa tan hoàn toàn hỗn hợp rắn sau phản ứng bằng dung dịch HCl dư, thu được dung dịch X. Thêm NH3 vào X cho đến dư, lọc kết tủa, đem nung ngoài không khí đến khối lượng không đổi thu được m gam chất rắn. Giá trị của m là A. 9,46. B. 7,78. C. 6,40. D. 6,16. Hướng dẫn giải Al AlCl3 Fe3O4 NH 3 Al(OH)3 Al2O 3 to r¾n HCl FeCl 2 to Sơ đồ : Fe2O3 Fe(OH)2 Fe2O3 FeO FeCl 3 Fe(OH)3 1 0, 06 Theo BTN T nAlO 3 nAl = : 2 = = 03 ol m AlO 3 03. 0, m ⇒ = 0, 102 3, gam = 06 2 2 2 1 1 M Ætkh¸c nFe2O 3 (r¾n) ∑ nFe(®Çu) = ( 01. + 015. + 02)= 04 ol : = 0, 3 0, 2 0, 0, m 2 2 ⇒ m Fe2O 3 (r¾n) 04. = 0, 160 6, gam = 4 ⇒ m AlO 3 Fe2O 3 (r¾n) = 06 6, = 46 = m 2 +m → § ¸n 3, + 4 9, gam ¸p A.
- B. Các thí dụ minh họa (tt) Thí dụ 4 Đốt cháy 6,72 gam bột Fe trong không khí thu được hỗn hợp X gồm FeO, Fe3O4, Fe2O3. Để hòa tan X cần dùng vừa hết 255 ml dung dịch chứa HNO3 2M, thu được V lít khí NO2 (sản phẩm khử duy nhất, đo ở đktc). Giá trị của V là A. 5,712. B. 3,360. C. 8,064. D. 6,048. Hướng dẫn giải O2 FeO HNO3 Sơ đồ biến đổi : Fe Fe3O4 Fe(NO 3) 3 + NO2 Fe2O3 6, 72 BTN T Fe(N O 3 )3 Fe = Theo víi n Fe: =n = 12 ol 0, m 56 BTN T :nN (H N O 3 ) N (Fe(N O 3 )3 ) + nN (N O 2 ) ⇒ nN (N O 2 ) N (H N O 3 ) − nN (Fe(N O 3 )3 ) Theo víi N =n =n = 255. − 0, 3 = 0, m ol ⇒ nN O 2 N (N O 2 ) 0, =n 2 12. 15 ⇒ V N O 2 0, 22, = 3, = V = 15. 4 360 Ý lt → ¸p B. § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 5 Lấy a mol NaOH hấp thụ hoàn toàn 2,64 gam khí CO2, thu được đúng 200 ml dung dịch D. Trong dung dịch D không còn NaOH và nồng độ của ion CO32− là 0,2 mol/l. a có giá trị là A. 0,12. B. 0,08. C. 0,06. D. 0,10. Hướng dẫn giải Na2CO 3 (x mol) Sơ đồ biến đổi : NaOH +CO2 NaHCO 3 (y mol) BTN T :nC (C O 2 ) C (N a2C O 3 ) +nC (N aH C O 3 ) ⇒ nC (N aH C O 3 ) C (C O 2 ) − nC (N a2C O 3 ) víi C =n =n ⇒ y nN aH C O 3 C (N aH C O 3 ) nC O 2 = =n = −n N a2C O 3 2, = 64 − 0,2. 2 0,02 ol 0, = m 44 BTN T a :nN a(N aO H ) N a(N a2C O 3 ) + nN a(N aH C O 3 ) = N a2C O 3 + nN aH C O 3 víi N =n 2n ⇒ a N a(N aO H ) 2. 2. 2 + 0, = 10 ol =n = 0, 0, 02 0, m → ¸p D . § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 6 Hoà tan hoàn toàn hỗn hợp gồm x mol FeS2 và y mol Cu2S vào axit HNO3 (vừa đủ), thu được dung dịch X (chỉ chứa hai muối sunfat) và khí duy nhất NO. Tỉ số của x/y là A. 1/3. B. 1/2. C. 2/1. D. 3/1. Hướng dẫn giải D o chØcã uèisunf X m dÞ kh« cßn N − at⇔ dung ch ng gèc O 3 S¬ bi ®æi → Fe SO 3 ( ®å Õn 2FeS 2 2 ( 4 ) 1) : x 5x 0, → 2C C u2S uSO 4 ( 2) 2y y D ung ch c¸c on Fe3+ ,C u2+ SO 2− dÞ chØcã i : vµ 4 BTN T :2x + y = 3. 5x 2y 5x = y ⇒ y = 2/ Theo víi S 0, + ⇒ 0, x/ 1 → ¸p C . § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 7 Đốt cháy hoàn toàn m gam hỗn hợp X gồm CH4, C3H6 và C4H10 thu được 4,4 gam CO2 và 2,52 gam H2O, m có giá trị là A. 1,48. B. 2,48. C. 1,34. D. 1,82. Hướng dẫn giải CH4 O2 Sơ đồ biến đổi : C3H6 CO2 + H2O C4H10 N hËn X = C (X) +m H (X) = C (C O 2 ) +m H (H 2O ) xÐt:m = m m m 4,4 2,52 ⇒ m ×12+ = × 2 1, gam = 48 44 18 → ¸p A. § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 8 Đốt cháy một hỗn hợp hiđrocacbon X thu được 2,24 lít CO2 (đktc) và 2,7 gam H2O. Thể tích O2 đã tham gia phản ứng cháy (đktc) là A. 2,80 lít. B. 3,92 lít. C. 4,48 lít. D. 5,60 lít. Hướng dẫn giải Theo BTN T : víi O 2,24 2,7 =n = nO (O 2 ) O (C O 2 ) +nO (H 2O ) × 2+ = 35 0, m ol 22,4 18 1 0,35 ⇒ O 2 nO n = = = 175 ol O 2 175. 4 3, lt 0, m V = 0, ⇒ 22, = 92 Ý 2 2 → ¸p B. § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 9 Tiến hành crackinh ở nhiệt độ cao 5,8 gam butan. Sau một thời gian thu được hỗn hợp khí X gồm CH4, C2H6, C2H4, C3H6 và C4H10. Đốt cháy hoàn toàn X trong khí oxi dư, rồi dẫn toàn bộ sản phẩm sinh ra qua bình đựng H2SO4 đặc. Độ tăng khối lượng của bình H2SO4 đặc là A. 9,0 gam. B. 4,5 gam. C. 18,0 gam. D. 13,5 gam. Hướng dẫn giải CH4 C2H6 O2 crackinh Sơ đồ phản ứng : C 4H 10 X C2H4 H 2O C3H6 C4H10 § é ¨ng îng b × H 2SO 4 nh µ 2O t khèil cña nh chÝ l H bÞ hÊp hô t 5,8 1 1,0 ⇒ H (H 2O ) H (C 4H10 ) = ×10 = 0 ol H 2O nH (H 2O ) = = 5 ol n =n 1, m n = ⇒ 0, m 58 2 2 ⇒ H 2O 5. = 0 m = 0, 18 9, gam ¸p A. → § ¸n
- B. Các thí dụ minh họa (tt) Thí dụ 10 Đốt cháy hoàn toàn m gam hỗn hợp hai rượu đơn chức cùng dãy đồng đẳng cần dùng vừa đủ V lít khí O2 (đktc), thu được 10,08 lít CO2 (đktc) và 12,6 gam H2O. Giá trị của V là A. 17,92. B. 4,48. C. 15,12. D. 25,76. Hướng dẫn giải 10, 08 12,6 = C ã nC O 2 : = 45 ol H 2O 0, m n = ; = 7 ol 0, m 22, 4 18 N hËn xÐt: n =n − 0, − 0, = 0, m +)nH 2O nC O 2 ⇔ r îu H 2O nC O 2 = 7 45 25 ol > +)r îu chøc r îu O (r îu) = 25 ol ®¬n ⇔n =n 0, m Theo BTN T víi : O nO (O 2 ) O (C O 2 ) + nO (H 2O ) − O (r îu) 0, + 7 25 35 ol =n n = 2. 45 0, − 0, = 1, m 1,35 ⇒ O 2 V = × 22, = 12 Ý ¸p C . 4 15, lt→ § ¸n 2
- B. Các thí dụ minh họa (tt) Thí dụ 11 Đun nóng 7,6 gam hỗn hợp A gồm C2H2, C2H4 và H2 trong bình kín với xúc tác Ni thu được hỗn hợp khí B. Đốt cháy hoàn toàn hỗn hợp B, dẫn sản phẩm cháy thu được lần lượt qua bình 1 đựng H2SO4 đặc, bình 2 đựng Ca(OH)2 dư thấy khối lượng bình 1 tăng 14,4 gam. Khối lượng tăng lên ở bình 2 là A. 6,0 gam. B. 9,6 gam. C. 35,2 gam. D. 22,0 gam. Hướng dẫn giải C 2H 2 O2 C 2H 4 Ni Sơ đồ phản ứng : B CO2 + H 2O H2 14, 4 = 14, gam ⇒ H 2O m H 2O 4 n = 8 ol m H (H 2O ) 8. = 6 = 0, m ⇒ = 0, 2 1, gam 18 xÐt: = m + ⇒ m = m − m 7, − 1, 6, gam N hËn m A C m H C A H = 6 6 = 0 6,0 ⇒ C O 2 nC 5 ol C O 2 5. = gam ¸p D . n = = = 0, m m ⇒ = 0, 44 22 → § ¸n 12
- B. Các thí dụ minh họa (tt) Thí dụ 12 Đốt cháy hoàn toàn 0,1 mol anđehit đơn chức X cần dùng vừa đủ 12,32 lít khí O2 (đktc), thu được 17,6 gam CO2. X là anđehit nào dưới đây ? A. CH≡ C− 2− CH CHO. B. CH3− 2− 2− CH CH CHO. C. CH2=CH− 2− CH CHO. D. CH2=C=CH−CHO. Hướng dẫn giải N hËn an®ehi xÐt: chøc an®ehi O (an®ehi) = 1m ol t®¬n ⇔n t=n t 0, Theo = n + −n BTN T nO (H 2O ) O (X) nO (O 2 ) O (C O 2 ) víi : O ⇒ H 2O nO (H 2O ) 1+ n = = 0, 12,32 − 17,6 × 2 = 4 ol × 2 0, m 22,4 44 t : = = 0, m an®ehi l no,®¬n N hËn hÊy nH 2O nC O 2 4 ol ⇒ tX µ chøc ⇒ l C H 3C H 2C H 2C H O ¸p B. X µ → § ¸n
- C. Bài tập luyện tập Bài tập 1 Hỗn hợp chất rắn X gồm 0,1 mol Fe2O3 và 0,1 mol Fe3O4. Hòa tan hoàn toàn X bằng dung dịch HCl dư, thu được dung dịch Y. Cho NaOH dư vào Y, thu được kết tủa Z. Lọc lấy kết tủa, rửa sạch rồi đem nung trong không khí đến khối lượng không đổi thu được m gam chất rắn T. Giá trị của m là A. 32,0. B. 16,0. C. 39,2. D. 40,0. Hướng dẫn giải Fe2O3 HCl FeCl NaOH Fe(OH) to Y FeCl2 Z Fe(OH)2 Fe2O3 Sơ đồ : Fe3O4 3 3 Theo BTN T nFe(T) nFe(Fe2O 3 ,®Çu) nFe(Fe3O 4 ,®Çu) : = + ⇒ nFe(T) 1. +0, 3 = 5 ol = 0, 2 1. 0, m 0,5 ⇒ nFe2O 3 (T) = 25 ol m m Fe2O 3 (T) 25. = 0, m ⇒ = = 0, 160 = gam 40 2 → ¸p D . § ¸n
- C. Bài tập luyện tập Bài tập 2 (Đề CĐ Khối A – 2007) Cho 4,48 lít khí CO (ở đktc) từ từ đi qua ống sứ nung nóng đựng 8 gam một oxit sắt đến khi phản ứng xảy ra hoàn toàn. Khí thu được sau phản ứng có tỉ khối so với hiđro bằng 20. Công thức của oxit sắt và phần trăm thể tích của khí CO2 trong hỗn hợp khí sau phản ứng là A. FeO; 75%. B. Fe2O3; 75%. C. Fe2O3; 65%. D. Fe3O4; 75%. Hướng dẫn giải Ph¶n : xO y C O + O 2 1)hay O [ ]→ O 2 2) øng Fe + → Fe C ( : C + O C ( 4,48 nkhÝsau nkhÝtr íc = = = 2 ol 0, m 22,4 l : m − T¨ng ¶m îng m O (FexO y ) = khÝsau m khÝtr íc gi khèi ⇒ O (FexO y ) = 2. 2 − 28. 2 = 4 2,4 m 20. 0, 0, 2, gam nO (FexO y ) = 15 ol ⇒ = 0, m 16 ⇒ m Fe(FexO y ) 0 − 2, = 6 5,6 = 8, 4 5, gam ⇒ nFe(FexO y ) = 1m ol = 0, 56
- C. Bài tập luyện tập Bài tập 2 (Đề CĐ Khối A – 2007) (tt) Cho 4,48 lít khí CO (ở đktc) từ từ đi qua ống sứ nung nóng đựng 8 gam một oxit sắt đến khi phản ứng xảy ra hoàn toàn. Khí thu được sau phản ứng có tỉ khối so với hiđro bằng 20. Công thức của oxit sắt và phần trăm thể tích của khí CO2 trong hỗn hợp khí sau phản ứng là A. FeO; 75%. B. Fe2O3; 75%. C. Fe2O3; 65%. D. Fe3O4; 75%. Hướng dẫn giải (tt) x 0, 1 2 ⇒ = = ⇒ tl Fe oxi µ 2O 3 y 0,15 3 nguyªn è nC O 2 = O (Fe2O 3 ) = 15 ol B¶o oµn t t : n 0, m 0, 15 ⇒ VC O 2 = % ×100% = 75% 0,2 → ¸p B. § ¸n
- C. Bài tập luyện tập Bài tập 3 (Đề ĐH Khối A – 2007) Hấp thụ hoàn toàn 2,688 lít khí CO2 (ở đktc) vào 2,5 lít dung dịch Ba(OH)2 nồng độ a mol/l, thu được 15,76 gam kết tủa. Giá trị của a là A. 0,048. B. 0,032. C. 0,04. D. 0,06. Hướng dẫn giải Sơ đồ phản ứng : Ba(OH)2 + CO2 → BaCO3 + Ba(HCO3)2 2,688 15, 76 = nC O 2 = 12 ol BaC O 3 0, m n ; = = 08 ol 0, m 22, 4 197 Theo BTN T :nC (C O 2 ) = C (BaC O 3 ) nC (Ba(H C O 3 )2 ) víi C n + ⇒ C (Ba(H C O 3 )2 ) = C (C O 2 ) − nC (BaC O 3 ) = C O 2 n n n −n BaC O 3 = 12 − 0, = 0, m ol 0, 08 04 0,04 ⇒ Ba(H C O 3 )2 = n = 0, m ol 02 2 Theo BTN T :nBa(Ba(O H )2 ) = Ba(BaC O 3 ) nBa(Ba(H C O 3 )2 ) víi Ba n + ⇒ Ba(O H )2 = BaC O 3 nBa(H C O 3 )2 = 08 + 0, = 0, m ol n n + 0, 02 10 0, 10 ⇒ a = = 04 oll § ¸p C . 0, m / → ¸n 2,5
- C. Bài tập luyện tập Bài tập 4 (Đề ĐH Khối A – 2007) Hoà tan hoàn toàn hỗn hợp gồm 0,12 mol FeS2 và a mol Cu2S vào axit HNO3 (vừa đủ), thu được dung dịch X (chỉ chứa hai muối sunfat) và khí duy nhất NO. Giá trị của a là A. 0,04. B. 0,12. C. 0,075. D. 0,06. Hướng dẫn giải X m at⇔ dung ch D o chØcã uèisunf cßn gèc − dÞ kh«ng N O 3 S¬ bi ®æi → Fe SO 3 ( ®å Õn 2FeS 2 2 ( 4 ) 1) : 0, 0, 12 06 → 2C C u2S uSO 4 ( 2) 2a a D ung ch c¸c on Fe3+ ,C u2+ SO 2− dÞ chØcã i : vµ 4 BTN T : 0, + a = 3. 06 2a = 0, Theo víi 2. 12 S 0, + ⇒ a 06 → ¸p D . § ¸n
CÓ THỂ BẠN MUỐN DOWNLOAD
-
10 phương pháp giải nhanh trắc nghiệm hóa học và 25 đề thi thử tuyển sinh đại học và cao đẳng
299 p |
4535 |
1637
-
Chuyên đề 11 phương pháp giải nhanh bài tập Hóa học THPT (Tập 1)
43 p |
1559 |
1325
-
Giải nhanh bài toán hóa học - Phương pháp bảo toàn khối lượng, tăng giảm khối lượng
37 p |
1279 |
538
-
Giải nhanh bài toán hóa học - Phương pháp bảo toàn electron
36 p |
925 |
337
-
Áp dụng phương pháp bảo toàn nguyên tố cho các bài tập hoá trong đề thi ĐH và CĐ từ năm 2007 đến năm 2009
11 p |
436 |
219
-
Giải nhanh bài toán hóa học - Phương pháp bảo toàn điện tích
27 p |
509 |
208
-
Hướng dẫn giải nhanh bài tập hóa học
14 p |
309 |
118
-
Các phương pháp giải nhanh bài toán Hóa học - GV. Đỗ Xuân Hưng
77 p |
217 |
112
-
Các công thức giải nhanh trắc nghiệm Hóa học hiệu quả
54 p |
217 |
84
-
Các phương pháp giải nhanh Hóa học
200 p |
219 |
78
-
Phương pháp giải bài toán Hóa vô cơ - Phương pháp bảo toàn khối lượng
6 p |
139 |
48
-
MỘT SỐ PHƯƠNG PHÁP GIẢI NHANH MÔN HÓA HỌC
72 p |
196 |
35
-
Phương pháp giải toán Hóa học qua các kì thi ĐH - CĐ từ năm 2010 - 2012
25 p |
63 |
23
-
21 kỹ thuật để giải siêu nhanh bài tập hóa học
4 p |
55 |
22
-
Các suy luận để giải nhanh bài tập hóa học
7 p |
46 |
12
-
Phương pháp giải bài tập trắc nghiệm môn: Hóa học
71 p |
22 |
8
-
Các công thức giải nhanh trắc nghiệm Hóa học (5tr)
5 p |
36 |
6

Set-Cookie: TLDEVNamespace=f2l7u601b568icpmbe1udskk72; path=/; domain=.tailieu.vn; HttpOnly


text:
Khóa Hàm Thụ Visual Basic 6.0_ Chương 9
Chia sẻ: Nguyễn Thị Giỏi | Ngày: | Loại File: PDF | Số trang:9
lượt xem 53
download
Khóa Hàm Thụ Visual Basic 6.0_ Chương 9
Bugs là những lỗi lầm của program mà ta phát hiện khi chạy nó. Debug là công việc loại tất cả những lỗi lầm trong chương trình để nó chạy êm xuôi trong mọi hoàn cảnh.Thông thường muốn fix một cái bug nào trước hết ta phải tìm hiểu lý do khiến nó xuất hiện. Một khi đã biết được duyên cớ rồi ta sẽ nghĩ ra cách giải quyết. Nói chung, có hai loại bugs: 1. Hoặc là program không làm đúng chuyện cần phải làm vì programmer hiểu lầm Specifications hay được cho tin tức sai lạc, hoặc là...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Khóa Hàm Thụ Visual Basic 6.0_ Chương 9
- Khóa Hàm Thụ Visual Basic 6.0 Chương Chín - Debug Bugs là những lỗi lầm của program mà ta phát hiện khi chạy nó. Debug là công việc loại tất cả những lỗi lầm trong chương trình để nó chạy êm xuôi trong mọi hoàn cảnh.Thông thường muốn fix một cái bug nào trước hết ta phải tìm hiểu lý do khiến nó xuất hiện. Một khi đã biết được duyên cớ rồi ta sẽ nghĩ ra cách giải quyết. Nói chung, có hai loại bugs: 1. Hoặc là program không làm đúng chuyện cần phải làm vì programmer hiểu lầm Specifications hay được cho tin tức sai lạc, hoặc là program bỏ sót chi tiết cần phải có. Trường hợp nầy ta giải quyết bằng cách giảm thiểu sự hiểu lầm qua sự nâng cấp khả năng truyền thông. 2. Program không thực hiện đúng như ý programmer muốn. Tức là programmer muốn một đàng mà bảo chương trình làm một ngã vì vô tình không viết lập trình đúng cách. Trường hợp nầy ta giải quyết bằng cách dùng những Software Tools (kể cả ngôn ngữ lập trình) thích hợp, và có những quá trình làm việc có hệ thống. Trong hãng xe hơi người ta dùng từ Quality Control để nói đến việc chế ra chiếc xe không có lỗi lầm gì cả. Để đạt mục tiêu ấy, chẳng những cần có người kiểm phẩm mà chính các nhân viên lấp ráp thận trọng để công việc chính của người kiểm phẩm là xác nhận kết quả tốt chớ không phải tìm lỗi lầm.Có nhiều yếu tố ảnh hưởng đến chất lượng của một program như chức năng của program, cấu trúc của các bộ phận, kỹ thuật lập trình và phương pháp debug. Debug không hẳn nằm ở giai đoạn cuối của dự án mà tùy thuộc rất nhiều vào các yếu tố kể trước trong mọi giai đoạn triển khai. Chức năng của chương trình (Program Specifications) Dầu program lớn hay nhỏ, trước hết ta phải xác nhận rõ ràng và tỉ mỉ nó cần phải làm gì, bao nhiêu người dùng, mạng như thế nào, database lớn bao nhiêu, phải chạy nhanh đến mức nào .v.v..Có nhiều chương trình phải bị thay đổi nữa chừng vì programmers hiểu lầm điều khách hàng muốn. Khổ nhất là lúc gần giao hàng mới khám phá ra có nhiều điểm trong chương trình khách muốn một đàng mà ta làm một ngã. Do đó trong sự liên hệ với khách hàng ta cần phải hỏi đi, hỏi lại, phản hồi với khách hàng nhiều lần điều ta hiểu bằng thư từ, tài liệu, để khách xác nhận là ta biết đúng ý họ trước khi xúc tiến việc thiết kế chương trình. Nếu sau nầy khách đổi ý, đó là quyền của họ, nhưng họ phải trả tiền thay đổi (variation). Cấu trúc các bộ phận
- Program nào cũng có một kiến trúc tương tự như một căn nhà. Mỗi bộ phận càng đơn giản càng tốt và cách ráp các bộ phận phải như thế nào để ta dễ thử. Trong khi thiết kế ta phải biết trước những yếu điểm của mỗi bộ phận nằm ở đâu để ta chuẩn bị cách thử chúng. Ta sẽ không hề tin bộ phận nào hoàn hảo cho đến khi đã thử nó, dù nó đơn sơ đến đâu.Nếu ta muốn dùng một kỹ thuật gì trong một hoàn cảnh nào mà ta không biết chắc nó chạy không thì nên thử riêng rẽ nó trước. Phương pháp ấy được gọi là Prototype. Ngoài ra, ta cũng nên kế hoạch cho những trường hợp bất ngờ, điển hình là bad data - khi user bấm lung tung hay database chứa rác rến. Nếu chương trình chạy trong real-time (tức là data thu nhập qua Serial Comm Port, Data Acquisition Card hay mạng), bạn cần phải lưu ý những trường hợp khác nhau tùy theo việc gì xẩy ra trước, việc gì xẩy ra sau. Lúc bấy giờ Logic của chương trình sẽ tùy thuộc vào trạng thái (State) của data. Tốt nhất là nghĩ đến những Scenarios (diễn tiến của những hoàn cảnh) để có thể thử từng giai đoạn và tình huống.Ngày nay với kỹ thuật Đối Tượng, ở giai đoạn thiết kế nầy là lúc quyết định các Data Structures (tables, records ..v.v.) và con số Forms với Classes. Nhớ rằng mỗi Class gồm có một Data Structure và những Subs/Functions/Properties làm việc (operate) trên data ấy. Data structure phải chứa đầy đủ những chi tiết (data fields, variables) ta cần. Kế đó là những cách chương trình process data. Subs/Functions nào có thể cho bên ngoài gọi thì ta cho nó Public, còn những Subs/Functions khác hiện hữu để phục vụ bên trong class thì ta cho nó Private. Kỹ thuật lập trình Căn bản của programmers và các thói quen của họ rất quan trọng. Nói chung, những người hấp tấp, nhảy vào viết chương trình trước khi suy nghĩ hay cân nhắc chính chắn thì sau nầy bugs lòi ra khắp nơi là chuyện tự nhiên. Dùng Subs và Functions Nếu ở giai đoạn thiết kế kiến trúc của chương trình ta chia ra từng Class, thì khi lập trình ta lại thiết kế chi tiết về Subs, Functions .v.v.., mỗi thứ sẽ cần phải thử như thế nào. Nếu ta có thể chia công việc ra từng giai đoạn thì mỗi giai đoạn có thể mà một call đến một Sub. Thứ gì cần phải tính ra hay lấy từ nơi khác thì có thể được thực hiện bằng một Function. Thí dụ như công việc trong một tiệm giặt ủi có thể gồm có các bước sau: 1. Nhận hàng 2. Phân chia từng loại 3. Tẩy 4. Giặt 5. Ủi 6. Vô bao 7. Tính tiền 8. Giao hàng
- Trong đó các bước 1,2,6 và 8 có thể là những Subs. Còn các bước 3,4,5 và 7 những Functions, thí dụ như khi ta giao cho Function Giặt một cái áo dơ ta sẽ lấy lại một cái áo sạch.Nhớ rằng điểm khác biệt chính giữa một Sub và một Function là Function cho ta một kết quả mà không làm thay đổi những parameters ta đưa cho nó. Trong khi đó, dầu rằng Sub không cho ta gì một cách rõ ràng nhưng nó có thể thay đổi trị số (value) của bất cứ parameters nào ta pass cho nó ByRef. Nhắc lại là khi ta pass một parameter ByVal cho một Sub thì giống như ta đưa một copy (bản sao) của variable đó cho Sub, Sub có thể sữa đổi nó nhưng nó sẽ bị bỏ qua, không ảnh hưởng gì đến original (bản chính) variable.Ngược lại khi ta pass một parameter ByRef cho một Sub thì giống như ta đưa bản chính của variable cho Sub để nó có thể sữa đổi vậy.Do đó để tránh trường hợp vô tình làm cho trị số một variable bị thay đổi vì ta dùng nó trong một Sub/Function bạn nên dùng ByVal khi pass nó như một parameter vào một Sub/Function.Thật ra, bạn có thể dùng ByRef cho một parameter pass vào một Function. Trong trường hợp đó dĩ nhiên variable ấy có thể bị sữa đổi. Điều nầy gọi là phản ứng phụ (side effect), vì bình thường ít ai làm vậy. Do đó, nếu bạn thật sự muốn vượt ngoài qui ước thông thường thì nên Comment rõ ràng để cảnh cáo người sẽ đọc chương trình bạn sau nầy.Ngoài ra, mỗi programmer thường có một Source Code Library của những Subs/Functions ưng ý. Bạn nên dùng các Subs/Functions trong Library của bạn càng nhiều càng tốt, vì chúng đã được thử nghiệm rồi. Đừng sợ Error Mỗi khi chương trình có một Error, hoặc là Compilation Error (vì ta viết code không đúng văn phạm, ngữ vựng), hoặc là Error trong khi chạy chương trình, thì bạn không nên sợ nó. Hãy bình tĩnh đọc cái Error Message để xem nó muốn nói gì. Nếu không hiểu ngay thì đọc đi đọc lại vài lần và suy nghiệm xem có tìm được mách nước nào không. Nghề programming của chúng ta sẽ gặp Errors như ăn cơm bữa, nên bạn phải tập bình tĩnh đối diện với chúng. Dùng Comment (Chú thích) Lúc viết code nhớ thêm Comment đầy đủ để bất cứ khi nào trở lại đọc đoạn code ấy trong tương lai bạn không cần phải dựa vào tài liệu nào khác mà có thể hiểu ngay lập tức mục đích của một Sub/Function hay đoạn code.Như thế không nhất thiết bạn phải viết rất nhiều Comment nhưng hễ có điểm nào khác thường, bí hiểm thì bạn cần thông báo và giải thích tại sao bạn làm cách ấy. Có thể sau nầy ta khám phá ra đoạn code có bugs; lúc đọc lại có thể ta sẽ thấy dầu rằng ý định và thiết kế đúng nhưng cách lập trình có phần thiếu soát chẳng hạn.Tính ra trung bình một programmer chỉ làm việc 18 tháng ở mỗi chỗ. Tức là, gần như chắc chắn code bạn viết sẽ được người khác đọc và bảo trì ( debug và thêm bớt). Do đó, code phải càng đơn giản, dễ hiểu càng tốt. Đừng lo ngại là chương trình sẽ chạy chậm hay chiếm nhiều bộ nhớ, vì ngày nay computer chạy rất nhanh và bộ nhớ rất rẻ. Khi nào ta thật sự cần phải quan tâm về vận
- tốc và bộ nhớ thì điều đó cần được thiết kế cẩn thận chớ không phải dựa vào những tiểu xảo về lập trình. Đặt tên các variables có ý nghĩa Khổ nhất là làm việc với các variables có tên vắn tắt như K, L, AA, XY. Ta không có một chút ý niệm chúng là ai, hiện hữu để làm gì. Thay vào đó, nếu ta đặt các tên variables như NumberOfItems, PricePerUnit, Discount .v.v.. thì sẽ dễ hiểu hơn.Một trong những bugs khó thấy nhất là ta dùng cùng một tên cho local variable (variable declared trong Sub/Function) và global variable (variable declared trong Form hay Basic Module). Local variable sẽ che đậy global variable cùng tên, nên nếu bạn muốn nói đến global variable trong hoàn cảnh ấy bạn sẽ dùng lầm local variable. Dùng Option Explicit Bạn nên trung tín dùng Option Explicit ở đầu mỗi Form, Class hay Module. Nếu có variable nào đánh vần trật VB6 IDE sẽ cho bạn biết ngay. Nếu bạn không dùng Option Explicit, một variable đánh vần trật được xem như một variable mới với giá trị 0 hay "" (empty string).Nói chung bạn nên thận trọng khi assign một data type cho một variable với data type khác. Bạn phải biết rõ bạn đang làm gì để khỏi bị phản ứng phụ (side effect). Desk Check Kiểm lại code trước khi compile. Khi ta compile code, nếu không có error chỉ có nghĩa là Syntax của code đúng, không có nghĩa là logic đúng. Do đó ta cần phải biết chắc là code ta viết sẽ làm đúng điều ta muốn bằng cách đọc lại code trước khi compile nó lần đầu tiên. Công việc nầy gọi là Desk Check (Kiểm trên bàn). Một chương trình được Desk Checked kỹ sẽ cần ít debug và chứa ít bugs không ngờ trước. Lý do là mọi scenarios đã được tiên liệu chu đáo. Soạn một Test Plan Test Plan liệt kê tất cả những gì ta muốn thử và cách thử chúng. Khi thử theo Test Plan ta sẽ khám phá ra những bug và tìm cách loại chúng ra. Hồ sơ ghi lại lịch sử của Test Plan (trục trặc gì xẩy ra, bạn đã dùng biện pháp nào để giải quyết) sẽ bổ ích trên nhiều phương diện. Ta sẽ học được từ kinh nghiệm Debug và biết rõ những thứ gì trong dự án đã được thử theo cách nào. Xử lý Error lúc Run time Khi EXE của một chương trình viết bằng VB6 đang chạy, nếu gặp Error, nó sẽ hiển thị một Error Dialog cho biết lý do vắn tắc. Sau khi bạn click OK, chương trình sẽ ngưng. Nếu bạn chạy chương trình trong VB6 IDE, bạn có dịp bảo program ngừng ở trong source code chỗ có Error bằng cách bấm
- button Debug trong Error Dialog. Tiếp theo đó bạn có thể tìm hiểu trị số các variables để đoán nguyên do của Error. Do đó, nếu bạn bắt đầu cho dùng một program bạn viết trong sở, nếu tiện thì trong vài tuần đầu, thay gì chạy EXE của chương trình, bạn chạy source code trong VB6 IDE. Nếu có bug nào xẩy ra, bạn có thể cho program ngừng trong source code để debug.Khi bạn dùng statement: On Error Resume Nextthì từ chỗ đó trở đi, nếu chương trình gặp Error, nó sẽ bỏ qua (ignore) hoàn toàn. Điểm nầy tiện ở chỗ giúp chương trình EXE của ta tránh bị té cái ạch rồi biến mất, rất là "quê" với khách hàng. Nhưng nó cũng bất lợi là khi khách hàng cho hay họ gặp những trường hợp lạ, không giải thích được (vì Error bị ignored mà không ai để ý), thì ta cũng bí luôn, có thể không biết bắt đầu từ đâu để debug. Do đó, dĩ nhiên trong lúc debug ta không nên dùng nó, nhưng trước khi giao cho khách hàng bạn nên cân nhắc kỹ trước khi dùng. Dùng Breakpoints Cách hay nhất để theo dõi execution của program là dùng Breakpoint để làm cho program ngừng lại ở một chỗ ta muốn ở trong code, rồi sau đó ta cho program bước từng bước. Trong dịp nầy ta sẽ xem xét trị số của những variables để coi chúng có đúng như dự định không.Bạn đoán trước execution sẽ đi qua chỗ nào trong code, chọn một chỗ thích hợp rồi click bên trái của hàng code, chỗ dấu chấm tròn đỏ như trong hình dưới đây: Nếu bạn click lên dấu chấm tròn đỏ một lần nữa thì là hủy bỏ nó. Một cách khác để đặt một breakpoint là để editor cursor lên hàng code rồi bấm F9. Nếu bạn bấm F9 lần nữa khi cursor nằm trên hàng đó thì là hủy bỏ break point.Lúc program đang dừng lại, bạn có thể xem trị số của một variable bằng cách để cursor lên trên variable ấy, tooltip sẽ hiên ra như trong hình dưới đây: Có một số chuyện khác bạn có thể làm trong lúc nầy. Bạn có thể nắm dấu chấm tròn đỏ kéo (drag) nó ngược lên một hay nhiều hàng code để nó sẽ execute trở lại vài hàng code. Bạn cho program execute từng hàng code bằng cách bấm F8. Menu command tương đương với nó là Debug | Step Into. Sẽ có lúc bạn không muốn program bước vào bên trong một
- Sub/Function mà muốn việc execute một Sub/Function như một bước đơn giản. Trong trường hợp đó, bạn dùng Menu command Debug | Step Over hay Shift-F8. Nhớ là để cho program chạy lại bạn bấm F5, tương đương với Menu command Run | Continue.Có khi bạn muốn program ngừng ở giữa một For Loop khi Iterator value có một trị số khá lớn. Nếu ta để sẵn một breakpoint ở đó rồi cứ bấm F5 nhiều lần thì hơi bất tiện. Có một mánh lới là dùng một IF statement để thử khi Iterator value có trị số ấy thì ta ngừng ở breakpoint tại statement Beep (thay gì statement Print ICounter) như trong hình dưới đây: Muốn hủy bỏ mọi breakpoints bạn dùng Menu command Debug | Clear All Breakpoints.Để tiện việc debug, bạn có thể dùng Debug Toolbar bằng cách hiển thị nó với Menu command View | Toolbars | Debug VB6 IDE sẽ hiển thị Debug Toolbar như sau:
- Dùng Immediate Window Immediate Window cho phép ta execute những VB statement strong khi program đang dừng lại. Ta có thể dùng một Print statement để hiển thị trị số của một variable hay kết quả của một Function, gọi một Sub hay thay đổi trị số một variable trước khi tiếp tục cho chương trình chạy lại.Để hiển thị Immediate Window, dùng Menu command View | Immediate Window. Thay vì đánh "Print ICounter" bạn cũng có thể đánh "? ICounter". Nhớ là mỗi VB Statement bạn đánh trong Immediate Window sẽ được executed ngay khi bạn bấm Enter. Bạn có thể dùng lại bất cứ VB statement nào trong Immediate Window, chỉ cần bấm Enter ở cuối hàng ấy. Theo dấu chân chương trình (Tracing) Đôi khi không tiện để ngừng program nhưng bạn vẫn muốn biết program đang làm gì trong một Sub. Bạn có thể để giữa code của một Sub/Function một statement giống như dưới đây:Debug.Print Format ( Now,"hh:mm:ss ") & "(Sub ProcessInput) Current Status:" & Status để program hiển thị trong Immediate Window value của Status khi nó execute bên trong Sub ProcessInput lúc mấy giờ.Có một cách khác là thay vì cho hiển thị trong Immediate Window bạn cho viết xuống (Log) vào trong một text file. Dưới đây là một Sub điển hình bạn có thể dùng để Log một Event message: Sub LogEvent(ByVal GivenFileName, ByVal Msg As String, HasFolder As Boolean, IncludeTimeDate As Integer) ' Append event message Msg to a text Logfile GivenFileName ' If GivenFileName is fullPathName then HasFolder is true
- ' IncludeTimeDate = 0 : No Time or Date ' = 1 : Prefix with Time ' = 2 : Prefix with Time and Date Dim FileNo, LogFileName, theFolder If HasFolder Then LogFileName = GivenFileName Else If Right(App.Path, 1) "\" Then theFolder = App.Path & "\" Else theFolder = App.Path End If LogFileName = theFolder & GivenFileName End If FileNo = FreeFile If Dir(LogFileName) "" Then Open LogFileName For Append As FileNo Else Open LogFileName For Output As FileNo End If Select Case IncludeTimeDate Case 0 ' No Time or Date Print #FileNo, Msg Case 1 ' Time only Print #FileNo, Format(Now, "hh:nn:ss ") & Msg Case 2 ' Date & Time Print #FileNo, Format(Now, "dd/mm/yyyy hh:nn:ss ") & Msg End Select Close FileNo End Sub Dùng Watch Window Đôi khi bạn muốn program ngừng không phải ở một chỗ nào nhất định, nhưng khi trị số của một variable hay của một expression là bao nhiêu, có thể là bạn không biết tại sao một variable tự nhiên có một trị số như vậy. Câu hỏi: Ai là thủ phạm? . Thí dụ bạn muốn program ngừng lại khi ICounter = 15. Bạn có thể dùng Menu command Debug | Add Watch. VB6 IDE sẽ hiển thị dialog dưới đây. Bạn đánh ICounter = 15 vào textbox Expression và click option box Break When Value Is True trong hộp Watch Type. Làm như vậy có nghĩa là ta muốn program ngừng khi ICounter bằng 15.
- Dùng Phương Pháp Triệt Khai (Elimination Method) Có một phương pháp rất thông dụng khi debug là Comment Out những hàng code nghi ngờ để xem bug có biến mất không. Nó được gọi là Elimination Method. Nếu bug biến mất thì những hàng code đã được comment out là thủ phạm. Bạn có thể Comment Out một số hàng cùng một lúc bằng cách highlight các hàng ấy rồi click Comment Block trên Edit ToolBar. Khi dùng Elimination Method bạn phải cân nhắc Logic của code bạn trong khi quyết định Comment Out những hàng nào, nếu không, đó là một phương pháp khá nguy hiểm.Ngoài ra, Menu Command View | Locals Window liệt kê cho bạn trị số của tất cả variables trong một Sub/Function và View | Call Stack liệt kê thứ bậc các Sub gọi lần lượt từ ngoài vào trong cho đến vị trí code đang ngừng hiện thời. Các liên mạng VB khác Những câu hỏi về Visual Basic Những mẹo vặt của Visual Basic Lập trình với VBA Được cung cấp từ Vivosoft
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 1
12 p | 261 | 150
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 2
9 p | 191 | 111
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 3
13 p | 149 | 88
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 8
9 p | 136 | 85
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 15
10 p | 138 | 83
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 4
9 p | 125 | 79
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 5
8 p | 162 | 74
-
Khóa Hàm Thụ Visual Basic 6.0_Chương 14
9 p | 115 | 71
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 7b
7 p | 133 | 65
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 11
16 p | 104 | 57
-
Khóa Hàm Thụ Visual Basic 6.0_Chương 13
10 p | 100 | 51
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 10
11 p | 97 | 51
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 12a
11 p | 87 | 47
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 12c
9 p | 88 | 41
-
Khóa Hàm Thụ Visual Basic 6.0
185 p | 85 | 36
-
Chương 1: Khóa Hàm Thụ Visual Basic 6.0
14 p | 76 | 28
-
Khóa Hàm Thụ Visual Basic 6.0 Chương 5 - Các loại dữ kiện
11 p | 66 | 16

markdown:
# Khóa Hàm Thụ Visual Basic 6.0_ Chương 9
Chia sẻ: Nguyễn Thị Giỏi | Ngày: | Loại File: PDF | Số trang:9
lượt xem 53
download
![](http://image1.tailieu.vn/document/thumbnail/2009/20091203/ntgioi120406/80x100/chu9_596.jpg)
##
Khóa Hàm Thụ Visual Basic 6.0_ Chương 9
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](http://static1.tailieu.vn/b2013az/templates/version1/default/images/down16x21.png)
Bugs là những lỗi lầm của program mà ta phát hiện khi chạy nó. Debug là công việc loại tất cả những lỗi lầm trong chương trình để nó chạy êm xuôi trong mọi hoàn cảnh.Thông thường muốn fix một cái bug nào trước hết ta phải tìm hiểu lý do khiến nó xuất hiện. Một khi đã biết được duyên cớ rồi ta sẽ nghĩ ra cách giải quyết. Nói chung, có hai loại bugs: 1. Hoặc là program không làm đúng chuyện cần phải làm vì programmer hiểu lầm Specifications hay được cho tin tức sai lạc, hoặc là...
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: Khóa Hàm Thụ Visual Basic 6.0_ Chương 9
- Khóa Hàm Thụ Visual Basic 6.0 Chương Chín - Debug Bugs là những lỗi lầm của program mà ta phát hiện khi chạy nó. Debug là công việc loại tất cả những lỗi lầm trong chương trình để nó chạy êm xuôi trong mọi hoàn cảnh.Thông thường muốn fix một cái bug nào trước hết ta phải tìm hiểu lý do khiến nó xuất hiện. Một khi đã biết được duyên cớ rồi ta sẽ nghĩ ra cách giải quyết. Nói chung, có hai loại bugs: 1. Hoặc là program không làm đúng chuyện cần phải làm vì programmer hiểu lầm Specifications hay được cho tin tức sai lạc, hoặc là program bỏ sót chi tiết cần phải có. Trường hợp nầy ta giải quyết bằng cách giảm thiểu sự hiểu lầm qua sự nâng cấp khả năng truyền thông. 2. Program không thực hiện đúng như ý programmer muốn. Tức là programmer muốn một đàng mà bảo chương trình làm một ngã vì vô tình không viết lập trình đúng cách. Trường hợp nầy ta giải quyết bằng cách dùng những Software Tools (kể cả ngôn ngữ lập trình) thích hợp, và có những quá trình làm việc có hệ thống. Trong hãng xe hơi người ta dùng từ Quality Control để nói đến việc chế ra chiếc xe không có lỗi lầm gì cả. Để đạt mục tiêu ấy, chẳng những cần có người kiểm phẩm mà chính các nhân viên lấp ráp thận trọng để công việc chính của người kiểm phẩm là xác nhận kết quả tốt chớ không phải tìm lỗi lầm.Có nhiều yếu tố ảnh hưởng đến chất lượng của một program như chức năng của program, cấu trúc của các bộ phận, kỹ thuật lập trình và phương pháp debug. Debug không hẳn nằm ở giai đoạn cuối của dự án mà tùy thuộc rất nhiều vào các yếu tố kể trước trong mọi giai đoạn triển khai. Chức năng của chương trình (Program Specifications) Dầu program lớn hay nhỏ, trước hết ta phải xác nhận rõ ràng và tỉ mỉ nó cần phải làm gì, bao nhiêu người dùng, mạng như thế nào, database lớn bao nhiêu, phải chạy nhanh đến mức nào .v.v..Có nhiều chương trình phải bị thay đổi nữa chừng vì programmers hiểu lầm điều khách hàng muốn. Khổ nhất là lúc gần giao hàng mới khám phá ra có nhiều điểm trong chương trình khách muốn một đàng mà ta làm một ngã. Do đó trong sự liên hệ với khách hàng ta cần phải hỏi đi, hỏi lại, phản hồi với khách hàng nhiều lần điều ta hiểu bằng thư từ, tài liệu, để khách xác nhận là ta biết đúng ý họ trước khi xúc tiến việc thiết kế chương trình. Nếu sau nầy khách đổi ý, đó là quyền của họ, nhưng họ phải trả tiền thay đổi (variation). Cấu trúc các bộ phận
- Program nào cũng có một kiến trúc tương tự như một căn nhà. Mỗi bộ phận càng đơn giản càng tốt và cách ráp các bộ phận phải như thế nào để ta dễ thử. Trong khi thiết kế ta phải biết trước những yếu điểm của mỗi bộ phận nằm ở đâu để ta chuẩn bị cách thử chúng. Ta sẽ không hề tin bộ phận nào hoàn hảo cho đến khi đã thử nó, dù nó đơn sơ đến đâu.Nếu ta muốn dùng một kỹ thuật gì trong một hoàn cảnh nào mà ta không biết chắc nó chạy không thì nên thử riêng rẽ nó trước. Phương pháp ấy được gọi là Prototype. Ngoài ra, ta cũng nên kế hoạch cho những trường hợp bất ngờ, điển hình là bad data - khi user bấm lung tung hay database chứa rác rến. Nếu chương trình chạy trong real-time (tức là data thu nhập qua Serial Comm Port, Data Acquisition Card hay mạng), bạn cần phải lưu ý những trường hợp khác nhau tùy theo việc gì xẩy ra trước, việc gì xẩy ra sau. Lúc bấy giờ Logic của chương trình sẽ tùy thuộc vào trạng thái (State) của data. Tốt nhất là nghĩ đến những Scenarios (diễn tiến của những hoàn cảnh) để có thể thử từng giai đoạn và tình huống.Ngày nay với kỹ thuật Đối Tượng, ở giai đoạn thiết kế nầy là lúc quyết định các Data Structures (tables, records ..v.v.) và con số Forms với Classes. Nhớ rằng mỗi Class gồm có một Data Structure và những Subs/Functions/Properties làm việc (operate) trên data ấy. Data structure phải chứa đầy đủ những chi tiết (data fields, variables) ta cần. Kế đó là những cách chương trình process data. Subs/Functions nào có thể cho bên ngoài gọi thì ta cho nó Public, còn những Subs/Functions khác hiện hữu để phục vụ bên trong class thì ta cho nó Private. Kỹ thuật lập trình Căn bản của programmers và các thói quen của họ rất quan trọng. Nói chung, những người hấp tấp, nhảy vào viết chương trình trước khi suy nghĩ hay cân nhắc chính chắn thì sau nầy bugs lòi ra khắp nơi là chuyện tự nhiên. Dùng Subs và Functions Nếu ở giai đoạn thiết kế kiến trúc của chương trình ta chia ra từng Class, thì khi lập trình ta lại thiết kế chi tiết về Subs, Functions .v.v.., mỗi thứ sẽ cần phải thử như thế nào. Nếu ta có thể chia công việc ra từng giai đoạn thì mỗi giai đoạn có thể mà một call đến một Sub. Thứ gì cần phải tính ra hay lấy từ nơi khác thì có thể được thực hiện bằng một Function. Thí dụ như công việc trong một tiệm giặt ủi có thể gồm có các bước sau: 1. Nhận hàng 2. Phân chia từng loại 3. Tẩy 4. Giặt 5. Ủi 6. Vô bao 7. Tính tiền 8. Giao hàng
- Trong đó các bước 1,2,6 và 8 có thể là những Subs. Còn các bước 3,4,5 và 7 những Functions, thí dụ như khi ta giao cho Function Giặt một cái áo dơ ta sẽ lấy lại một cái áo sạch.Nhớ rằng điểm khác biệt chính giữa một Sub và một Function là Function cho ta một kết quả mà không làm thay đổi những parameters ta đưa cho nó. Trong khi đó, dầu rằng Sub không cho ta gì một cách rõ ràng nhưng nó có thể thay đổi trị số (value) của bất cứ parameters nào ta pass cho nó ByRef. Nhắc lại là khi ta pass một parameter ByVal cho một Sub thì giống như ta đưa một copy (bản sao) của variable đó cho Sub, Sub có thể sữa đổi nó nhưng nó sẽ bị bỏ qua, không ảnh hưởng gì đến original (bản chính) variable.Ngược lại khi ta pass một parameter ByRef cho một Sub thì giống như ta đưa bản chính của variable cho Sub để nó có thể sữa đổi vậy.Do đó để tránh trường hợp vô tình làm cho trị số một variable bị thay đổi vì ta dùng nó trong một Sub/Function bạn nên dùng ByVal khi pass nó như một parameter vào một Sub/Function.Thật ra, bạn có thể dùng ByRef cho một parameter pass vào một Function. Trong trường hợp đó dĩ nhiên variable ấy có thể bị sữa đổi. Điều nầy gọi là phản ứng phụ (side effect), vì bình thường ít ai làm vậy. Do đó, nếu bạn thật sự muốn vượt ngoài qui ước thông thường thì nên Comment rõ ràng để cảnh cáo người sẽ đọc chương trình bạn sau nầy.Ngoài ra, mỗi programmer thường có một Source Code Library của những Subs/Functions ưng ý. Bạn nên dùng các Subs/Functions trong Library của bạn càng nhiều càng tốt, vì chúng đã được thử nghiệm rồi. Đừng sợ Error Mỗi khi chương trình có một Error, hoặc là Compilation Error (vì ta viết code không đúng văn phạm, ngữ vựng), hoặc là Error trong khi chạy chương trình, thì bạn không nên sợ nó. Hãy bình tĩnh đọc cái Error Message để xem nó muốn nói gì. Nếu không hiểu ngay thì đọc đi đọc lại vài lần và suy nghiệm xem có tìm được mách nước nào không. Nghề programming của chúng ta sẽ gặp Errors như ăn cơm bữa, nên bạn phải tập bình tĩnh đối diện với chúng. Dùng Comment (Chú thích) Lúc viết code nhớ thêm Comment đầy đủ để bất cứ khi nào trở lại đọc đoạn code ấy trong tương lai bạn không cần phải dựa vào tài liệu nào khác mà có thể hiểu ngay lập tức mục đích của một Sub/Function hay đoạn code.Như thế không nhất thiết bạn phải viết rất nhiều Comment nhưng hễ có điểm nào khác thường, bí hiểm thì bạn cần thông báo và giải thích tại sao bạn làm cách ấy. Có thể sau nầy ta khám phá ra đoạn code có bugs; lúc đọc lại có thể ta sẽ thấy dầu rằng ý định và thiết kế đúng nhưng cách lập trình có phần thiếu soát chẳng hạn.Tính ra trung bình một programmer chỉ làm việc 18 tháng ở mỗi chỗ. Tức là, gần như chắc chắn code bạn viết sẽ được người khác đọc và bảo trì ( debug và thêm bớt). Do đó, code phải càng đơn giản, dễ hiểu càng tốt. Đừng lo ngại là chương trình sẽ chạy chậm hay chiếm nhiều bộ nhớ, vì ngày nay computer chạy rất nhanh và bộ nhớ rất rẻ. Khi nào ta thật sự cần phải quan tâm về vận
- tốc và bộ nhớ thì điều đó cần được thiết kế cẩn thận chớ không phải dựa vào những tiểu xảo về lập trình. Đặt tên các variables có ý nghĩa Khổ nhất là làm việc với các variables có tên vắn tắt như K, L, AA, XY. Ta không có một chút ý niệm chúng là ai, hiện hữu để làm gì. Thay vào đó, nếu ta đặt các tên variables như NumberOfItems, PricePerUnit, Discount .v.v.. thì sẽ dễ hiểu hơn.Một trong những bugs khó thấy nhất là ta dùng cùng một tên cho local variable (variable declared trong Sub/Function) và global variable (variable declared trong Form hay Basic Module). Local variable sẽ che đậy global variable cùng tên, nên nếu bạn muốn nói đến global variable trong hoàn cảnh ấy bạn sẽ dùng lầm local variable. Dùng Option Explicit Bạn nên trung tín dùng Option Explicit ở đầu mỗi Form, Class hay Module. Nếu có variable nào đánh vần trật VB6 IDE sẽ cho bạn biết ngay. Nếu bạn không dùng Option Explicit, một variable đánh vần trật được xem như một variable mới với giá trị 0 hay "" (empty string).Nói chung bạn nên thận trọng khi assign một data type cho một variable với data type khác. Bạn phải biết rõ bạn đang làm gì để khỏi bị phản ứng phụ (side effect). Desk Check Kiểm lại code trước khi compile. Khi ta compile code, nếu không có error chỉ có nghĩa là Syntax của code đúng, không có nghĩa là logic đúng. Do đó ta cần phải biết chắc là code ta viết sẽ làm đúng điều ta muốn bằng cách đọc lại code trước khi compile nó lần đầu tiên. Công việc nầy gọi là Desk Check (Kiểm trên bàn). Một chương trình được Desk Checked kỹ sẽ cần ít debug và chứa ít bugs không ngờ trước. Lý do là mọi scenarios đã được tiên liệu chu đáo. Soạn một Test Plan Test Plan liệt kê tất cả những gì ta muốn thử và cách thử chúng. Khi thử theo Test Plan ta sẽ khám phá ra những bug và tìm cách loại chúng ra. Hồ sơ ghi lại lịch sử của Test Plan (trục trặc gì xẩy ra, bạn đã dùng biện pháp nào để giải quyết) sẽ bổ ích trên nhiều phương diện. Ta sẽ học được từ kinh nghiệm Debug và biết rõ những thứ gì trong dự án đã được thử theo cách nào. Xử lý Error lúc Run time Khi EXE của một chương trình viết bằng VB6 đang chạy, nếu gặp Error, nó sẽ hiển thị một Error Dialog cho biết lý do vắn tắc. Sau khi bạn click OK, chương trình sẽ ngưng. Nếu bạn chạy chương trình trong VB6 IDE, bạn có dịp bảo program ngừng ở trong source code chỗ có Error bằng cách bấm
- button Debug trong Error Dialog. Tiếp theo đó bạn có thể tìm hiểu trị số các variables để đoán nguyên do của Error. Do đó, nếu bạn bắt đầu cho dùng một program bạn viết trong sở, nếu tiện thì trong vài tuần đầu, thay gì chạy EXE của chương trình, bạn chạy source code trong VB6 IDE. Nếu có bug nào xẩy ra, bạn có thể cho program ngừng trong source code để debug.Khi bạn dùng statement: On Error Resume Nextthì từ chỗ đó trở đi, nếu chương trình gặp Error, nó sẽ bỏ qua (ignore) hoàn toàn. Điểm nầy tiện ở chỗ giúp chương trình EXE của ta tránh bị té cái ạch rồi biến mất, rất là "quê" với khách hàng. Nhưng nó cũng bất lợi là khi khách hàng cho hay họ gặp những trường hợp lạ, không giải thích được (vì Error bị ignored mà không ai để ý), thì ta cũng bí luôn, có thể không biết bắt đầu từ đâu để debug. Do đó, dĩ nhiên trong lúc debug ta không nên dùng nó, nhưng trước khi giao cho khách hàng bạn nên cân nhắc kỹ trước khi dùng. Dùng Breakpoints Cách hay nhất để theo dõi execution của program là dùng Breakpoint để làm cho program ngừng lại ở một chỗ ta muốn ở trong code, rồi sau đó ta cho program bước từng bước. Trong dịp nầy ta sẽ xem xét trị số của những variables để coi chúng có đúng như dự định không.Bạn đoán trước execution sẽ đi qua chỗ nào trong code, chọn một chỗ thích hợp rồi click bên trái của hàng code, chỗ dấu chấm tròn đỏ như trong hình dưới đây: Nếu bạn click lên dấu chấm tròn đỏ một lần nữa thì là hủy bỏ nó. Một cách khác để đặt một breakpoint là để editor cursor lên hàng code rồi bấm F9. Nếu bạn bấm F9 lần nữa khi cursor nằm trên hàng đó thì là hủy bỏ break point.Lúc program đang dừng lại, bạn có thể xem trị số của một variable bằng cách để cursor lên trên variable ấy, tooltip sẽ hiên ra như trong hình dưới đây: Có một số chuyện khác bạn có thể làm trong lúc nầy. Bạn có thể nắm dấu chấm tròn đỏ kéo (drag) nó ngược lên một hay nhiều hàng code để nó sẽ execute trở lại vài hàng code. Bạn cho program execute từng hàng code bằng cách bấm F8. Menu command tương đương với nó là Debug | Step Into. Sẽ có lúc bạn không muốn program bước vào bên trong một
- Sub/Function mà muốn việc execute một Sub/Function như một bước đơn giản. Trong trường hợp đó, bạn dùng Menu command Debug | Step Over hay Shift-F8. Nhớ là để cho program chạy lại bạn bấm F5, tương đương với Menu command Run | Continue.Có khi bạn muốn program ngừng ở giữa một For Loop khi Iterator value có một trị số khá lớn. Nếu ta để sẵn một breakpoint ở đó rồi cứ bấm F5 nhiều lần thì hơi bất tiện. Có một mánh lới là dùng một IF statement để thử khi Iterator value có trị số ấy thì ta ngừng ở breakpoint tại statement Beep (thay gì statement Print ICounter) như trong hình dưới đây: Muốn hủy bỏ mọi breakpoints bạn dùng Menu command Debug | Clear All Breakpoints.Để tiện việc debug, bạn có thể dùng Debug Toolbar bằng cách hiển thị nó với Menu command View | Toolbars | Debug VB6 IDE sẽ hiển thị Debug Toolbar như sau:
- Dùng Immediate Window Immediate Window cho phép ta execute những VB statement strong khi program đang dừng lại. Ta có thể dùng một Print statement để hiển thị trị số của một variable hay kết quả của một Function, gọi một Sub hay thay đổi trị số một variable trước khi tiếp tục cho chương trình chạy lại.Để hiển thị Immediate Window, dùng Menu command View | Immediate Window. Thay vì đánh "Print ICounter" bạn cũng có thể đánh "? ICounter". Nhớ là mỗi VB Statement bạn đánh trong Immediate Window sẽ được executed ngay khi bạn bấm Enter. Bạn có thể dùng lại bất cứ VB statement nào trong Immediate Window, chỉ cần bấm Enter ở cuối hàng ấy. Theo dấu chân chương trình (Tracing) Đôi khi không tiện để ngừng program nhưng bạn vẫn muốn biết program đang làm gì trong một Sub. Bạn có thể để giữa code của một Sub/Function một statement giống như dưới đây:Debug.Print Format ( Now,"hh:mm:ss ") & "(Sub ProcessInput) Current Status:" & Status để program hiển thị trong Immediate Window value của Status khi nó execute bên trong Sub ProcessInput lúc mấy giờ.Có một cách khác là thay vì cho hiển thị trong Immediate Window bạn cho viết xuống (Log) vào trong một text file. Dưới đây là một Sub điển hình bạn có thể dùng để Log một Event message: Sub LogEvent(ByVal GivenFileName, ByVal Msg As String, HasFolder As Boolean, IncludeTimeDate As Integer) ' Append event message Msg to a text Logfile GivenFileName ' If GivenFileName is fullPathName then HasFolder is true
- ' IncludeTimeDate = 0 : No Time or Date ' = 1 : Prefix with Time ' = 2 : Prefix with Time and Date Dim FileNo, LogFileName, theFolder If HasFolder Then LogFileName = GivenFileName Else If Right(App.Path, 1) "\" Then theFolder = App.Path & "\" Else theFolder = App.Path End If LogFileName = theFolder & GivenFileName End If FileNo = FreeFile If Dir(LogFileName) "" Then Open LogFileName For Append As FileNo Else Open LogFileName For Output As FileNo End If Select Case IncludeTimeDate Case 0 ' No Time or Date Print #FileNo, Msg Case 1 ' Time only Print #FileNo, Format(Now, "hh:nn:ss ") & Msg Case 2 ' Date & Time Print #FileNo, Format(Now, "dd/mm/yyyy hh:nn:ss ") & Msg End Select Close FileNo End Sub Dùng Watch Window Đôi khi bạn muốn program ngừng không phải ở một chỗ nào nhất định, nhưng khi trị số của một variable hay của một expression là bao nhiêu, có thể là bạn không biết tại sao một variable tự nhiên có một trị số như vậy. Câu hỏi: Ai là thủ phạm? . Thí dụ bạn muốn program ngừng lại khi ICounter = 15. Bạn có thể dùng Menu command Debug | Add Watch. VB6 IDE sẽ hiển thị dialog dưới đây. Bạn đánh ICounter = 15 vào textbox Expression và click option box Break When Value Is True trong hộp Watch Type. Làm như vậy có nghĩa là ta muốn program ngừng khi ICounter bằng 15.
- Dùng Phương Pháp Triệt Khai (Elimination Method) Có một phương pháp rất thông dụng khi debug là Comment Out những hàng code nghi ngờ để xem bug có biến mất không. Nó được gọi là Elimination Method. Nếu bug biến mất thì những hàng code đã được comment out là thủ phạm. Bạn có thể Comment Out một số hàng cùng một lúc bằng cách highlight các hàng ấy rồi click Comment Block trên Edit ToolBar. Khi dùng Elimination Method bạn phải cân nhắc Logic của code bạn trong khi quyết định Comment Out những hàng nào, nếu không, đó là một phương pháp khá nguy hiểm.Ngoài ra, Menu Command View | Locals Window liệt kê cho bạn trị số của tất cả variables trong một Sub/Function và View | Call Stack liệt kê thứ bậc các Sub gọi lần lượt từ ngoài vào trong cho đến vị trí code đang ngừng hiện thời. Các liên mạng VB khác Những câu hỏi về Visual Basic Những mẹo vặt của Visual Basic Lập trình với VBA Được cung cấp từ Vivosoft
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 1
12 p |
261 |
150
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 2
9 p |
191 |
111
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 3
13 p |
149 |
88
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 8
9 p |
136 |
85
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 15
10 p |
138 |
83
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 4
9 p |
125 |
79
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 5
8 p |
162 |
74
-
Khóa Hàm Thụ Visual Basic 6.0_Chương 14
9 p |
115 |
71
-
Khóa Hàm Thụ Visual Basic 6.0_ Chương 7b
7 p |
133 |
65
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 11
16 p |
104 |
57
-
Khóa Hàm Thụ Visual Basic 6.0_Chương 13
10 p |
100 |
51
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 10
11 p |
97 |
51
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 12a
11 p |
87 |
47
-
Khóa Hàm Thụ Visual Basic 6.0 _Chương 12c
9 p |
88 |
41
-
Khóa Hàm Thụ Visual Basic 6.0
185 p |
85 |
36
-
Chương 1: Khóa Hàm Thụ Visual Basic 6.0
14 p |
76 |
28
-
Khóa Hàm Thụ Visual Basic 6.0 Chương 5 - Các loại dữ kiện
11 p |
66 |
16

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Identified-Payload-Type: application/xhtml+xml

Server: Apache/2.2.31 (CentOS)

Connection: close

Pragma: no-cache

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Set-Cookie: TLDEVNamespace=c8qb5vr28os7u0ue0o0a046ve7; path=/; domain=.tailieu.vn; HttpOnly

Vary: Accept-Encoding

Content-Type: text/html; charset=UTF-8