intTypePromotion=1
ADSENSE

Sáng kiến kinh nghiệm THPT: Xây dựng và giải các bài tập thực tế về “Cấu trúc rẽ nhánh” tin học 11

Chia sẻ: Caphesuadathemhanh | Ngày: | Loại File: DOCX | Số trang:27

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

Mục đích của sáng kiến kinh nghiệm là còn giúp học sinh thích ứng và hoà nhập được với xã hội hiện đại, hình thành và phát triển cho học sinh năng lực tin học để học tập, làm việc và nâng cao chất lượng cuộc sống, đóng góp vào sự nghiệp xây dựng và bảo vệ Tổ quốc.

Chủ đề:
Lưu

Nội dung Text: Sáng kiến kinh nghiệm THPT: Xây dựng và giải các bài tập thực tế về “Cấu trúc rẽ nhánh” tin học 11

  1. MỤC LỤC Nội   dung  Trang BÁO CÁO KẾT QUẢ NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN 1. Lời giới thiệu Một trong những mục tiêu của chương trình giáo dục phổ  thông tổng  thể  sắp tới của bậc trung học phổ  thông là nhằm giúp học sinh củng cố  và  phát triển những kết quả  của giáo dục trung học cơ  sở, hoàn thiện học vấn  phổ thông và có những hiểu biết thông thường về kỹ thuật và hướng nghiệp,  có điều kiện phát huy năng lực cá nhân để lựa chọn hướng phát triển, tiếp tục   học đại học, cao đẳng, trung cấp, học nghề hoặc đi vào cuộc sống lao động. Trong đó giáo dục tin học đóng vai trò chủ đạo trong việc chuẩn bị cho   học sinh khả  năng tìm kiếm, tiếp nhận, mở  rộng tri thức và sáng tạo trong  thời đại cách mạng công nghiệp lần thứ  tư  và toàn cầu hoá. Tin học có ảnh  hưởng lớn đến cách sống, cách suy nghĩ và hành động của con người, là công  cụ hiệu quả hỗ trợ biến việc học thành tự học suốt đời. Môn Tin học còn giúp học sinh thích ứng và hoà nhập được với xã hội  hiện đại, hình thành và phát triển cho học sinh năng lực tin học để  học tập,   làm việc và nâng cao chất lượng cuộc sống, đóng góp vào sự nghiệp xây dựng và   bảo vệ Tổ quốc. Một trong những nội dung của tin học là việc lập được các chương  trình tự hoạt động cho máy tính, máy gia dụng. Và để  làm được việc đó cần 
  2. có một quá trình nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đó nhà  lập trình có thể  chọn một ngôn ngữ  lập trình thích hợp. Tuy nhiên mọi thứ  đều có điểm khởi đầu của nó, với học sinh việc học Pascal là khởi đầu cho  việc tiếp cận ngôn ngữ  lập trình bậc cao. Từ  đó các em có thêm một định  hướng, một niềm đam mê về  tin học, về  nghề  nghiệp mà các em chọn sau   này. Đồng thời Pascal là một “ngôn ngữ học đường”. Bản chất viết chương trình là một môn học khó, trừu tượng, học sinh   khó  nắm kiến thức. Học sinh muốn nắm được kiến thức phải nắm vững   những kiến thức cơ  bản của các câu lệnh, mà câu lệnh rẽ  nhánh là một câu  lệnh cơ bản của mọi ngôn ngữ lập trình. Từ thực tiễn giảng dạy và bồi dưỡng học sinh giỏi các năm tại trường  THPT Nguyễn Thái Học tôi thấy rằng: Đại đa số học sinh chưa hứng thú học  môn Tin, chưa thấy rõ việc lập trình ứng dụng vào các tình huống trong cuộc  sống như  thế  nào? Do đó tôi băn khoăn và suy nghĩ vậy làm thế  nào  để  qua  mỗi hoạt động học, qua mỗi bài tập học sinh giải quyết các em sẽ hứng thú,  yêu thích môn Tin hơn? Để các em thấy được sự cần thiết của các ứng dụng   tin học vào trong thực tế cuộc sống hàng ngày ra sao? Để sau này khi học tiếp   hoặc tham gia vào cuộc sống lao động các em có thể áp dụng tin học vào thực  tiễn, hoặc có thể  lý giải tin học  ứng dụng trong cuộc sống như  thế  nào?  Chính vì những lý do trên nên ngay từ đầu năm học 2019 ­ 2020 tôi đã chọn và  xây dựng đề  tài  “Xây dựng và giải các bài tập thực tế  về  “Cấu trúc rẽ  nhánh” tin học 11”. 2. Tên sáng kiến  “Xây dựng và giải các bài tập thực tế về “Cấu trúc rẽ nhánh” tin học 11”. 3. Tác giả sáng kiến ­ Họ và tên: Nguyễn Thị Mơ ­ Địa chỉ tác giả sáng kiến: trường THPT Nguyễn Thái Học ­ Số điện thoại: 0396.88.99.56      E_mail: nguyenthimo86@gmail.com 4. Chủ đầu tư tạo ra sáng kiến: Nguyễn Thị Mơ 5. Lĩnh vực áp dụng sáng kiến: Dạy và học tin học 11 đại trà, bồi dưỡng  học sinh giỏi Tin THPT. 6. Ngày sáng kiến được áp dụng lần đầu: tháng 9 năm 2019 7. Mô tả bản chất của sáng kiến 7.1. Lý thuyết về cấu trúc rẽ nhánh (Theo chương trình sách giáo khoa Tin học 11 hiện hành) 2
  3. 7.1.1. Rẽ nhánh Thường ngày, có rất nhiều việc chỉ được thực hiện khi một điều kiện   cụ thể nào đó được thỏa mãn. Ví dụ, Châu và Ngọc thường cùng nhau chuẩn bị các bài thực hành môn  Tin học.  Một lần Châu hẹn với Ngọc: "Chiều mai nếu trời không mưa thì Châu  sẽ đến nhà Ngọc". Một lần khác, Ngọc nói với Châu: "Chiều mai nếu trời không mưa thì  Ngọc sẽ đến nhà Châu, nếu mưa thì sẽ gọi điện cho Châu để trao đổi". Câu nói của Châu cho ta biết một việc làm cụ thể (Châu đến nhà Ngọc)  sẽ  được thực hiện nếu một điều kiện cụ  thể  (trời không mưa) thoả  mãn.  Ngoài ra không đề  cập đến việc gì sẽ  xảy ra nếu điều kiện đó không thoả  mãn (trời mưa). Cách diễn đạt như  vậy ta nói thuộc dạng mệnh đề  thiếu:  Nếu... thì… Câu nói của Ngọc khẳng định một trong hai việc cụ thể (Ngọc đến nhà  Châu hay Ngọc gọi điện cho Châu) chắc chắn sẽ xảy ra. Tuy nhiên, việc nào   trong hai việc sẽ  được thực hiện thì tuỳ  thuộc vào điều kiện cụ  thể  (trời   không mưa) thoả  mãn hay không. Cách diễn đạt như  vậy ta nói thuộc dạng  mệnh đề đủ: Nếu… thì…, nếu không thì… Từ đó có thể thấy, trong nhiều thuật toán, các thao tác tiếp theo sẽ phụ  thuộc vào kết quả nhận được từ các bước trước đó.  Cấu trúc dùng để mô tả các mệnh đề có dạng như trên được gọi là cấu   trúc rẽ nhánh. 7.1.2. Câu lệnh If ­ then Để mô tả cấu trúc rẽ nhánh, Pascal dùng câu lệnh if­then. Tương ứng  với hai dạng mệnh đề thiếu và đủ nói ở trên, Pascal có hai dạng câu lệnh if­ then:  a) Dạng thiếu  if  then ;   b) Dạng đủ  if  then  else ;  trong đó:  Điều kiện: Biểu thức quan hệ hoặc lôgic.  Câu lệnh, câu lệnh 1, câu lệnh 2 là một câu lệnh của Pascal. 3
  4. Hình 1                                                       Hình 2 Ở  dạng thiếu: Đầu tiên  điều kiện  sẽ  được tính và kiểm tra. Nếu   điều   kiện đúng (có giá trị  true) thì câu lệnh sẽ  được thực hiện, ngược lại thì câu   lệnh sẽ bị bỏ qua (Hình 1). Ở dạng đủ: điều kiện cũng được tính và kiểm tra. Nếu điều kiện đúng thì  câu lệnh 1  sẽ  được thực hiện, ngược lại thì  câu lệnh 2 sẽ  được thực hiện  (Hình 2).  Ví dụ 1 if Delta < 0 then writeln('Phuong trinh vo nghiem.'); Ví dụ 2 if a mod 3 = 0 then write('a chia het cho 3') else write('a khong chia het cho 3'); 7.1.3. Câu lệnh ghép Theo cú pháp, sau một số  từ  khoá (như  then  hoặc  else) phải là một câu  lệnh. Nhưng trong nhiều trường hợp, các thao tác sau những tên dành riêng đó  khá phức tạp, đòi hỏi không phải chỉ  một mà là nhiều câu lệnh để  mô tả.  Trong các trường hợp như vậy, ngôn ngữ lập trình cho phép gộp một dãy câu  lệnh thành một câu lệnh ghép (hay câu lệnh hợp thành). Chẳng hạn, câu lệnh  ghép của Pascal có dạng: begin end;  Câu lệnh, câu lệnh 1, câu lệnh 2 trong các câu lệnh if­then  ở  mục trên có  thể là câu lệnh ghép.  Thuật ngữ câu lệnh được hiểu chung cho câu lệnh đơn và câu lệnh ghép. Ví dụ  if D < 0 then writeln('Phuong trinh vo nghiem.') else begin x1:= (-b – sqrt(b*b – 4*a*c))/(2*a); 4
  5. x2:= -b/a-x1 end;  Chú ý: Trước else không có dấu “;” 7.2. Xây dựng và giải các bài tập thực tế về cấu trúc rẽ nhánh Các bài tập được xây dựng và giải là các bài tập gắn với các tình huống  gần gũi, quen thuộc trong cuộc sống hàng ngày của các em. Qua mỗi bài tập   đó các em thấy được  ứng dụng của tin học trong cuộc sống hàng ngày như  thế nào? Thấy được những phần mềm, ứng dụng không phải quá xa vời, cao  siêu mà bắt nguồn từ  những bài học hàng ngày các em được học. Qua hệ  thống các bài tập được xây dựng học sinh cũng hình thành và phát huy năng   lực, kĩ năng của mình để  giải quyết các vấn đề  thực tiễn trong cuộc sống   hoặc lý giải được việc tin học ứng dụng như thế nào trong thực tế. Hệ thống  bài tập được xây dựng từ dễ đến khó, từ cơ bản đến nâng cao và chia thành 2  loại:   Các bài tập có thể áp dụng cho dạy và học tin học đại trà trong chương  trình tin học THPT.   Các bài tập có thể áp dụng cho dạy học và bồi dưỡng học sinh giỏi Tin  học THPT. Mỗi bài tập xây dựng gồm 3 nội dung:   Phát biểu nội dung bài toán gắn với tình huống học sinh gặp trong thực  tế.  Phân tích để đưa ra hướng giải của bài toán, có thể  phân tích học sinh  học được gì qua bài toán đó, lý do tại sao lại xây dựng và chọn bài toán đó. Từ  bài toán đó có thể nâng cao mở rộng sang bài toán khác không?  Đưa ra chương trình đề xuất. 7.2.1. Các bài tập có thể áp dụng cho dạy học tin học đại trà Các bài tập áp dụng cho dạy học tin học đại trà được viết chương trình  đề xuất đầy đủ  sử  dụng nhập dữ  liệu từ  bàn phím. Các bài tập này cũng có  thể dùng để dạy học và bồi dưỡng học sinh giỏi. Bài 1: Giải phương trình bậc 2 Bài toán: Lớp 11 năm nay An được cô giáo Tin học giới thiệu mình sẽ  được  học lập trình. An liền suy nghĩ luôn chương trình giải phương trình bậc hai  trên máy tính cầm tay không biết họ  lập trình ra sao nhỉ?   Em giúp An viết  5
  6. chương trình nhập từ  bàn phím hệ  số  a,b,c. Tìm nghiệm thực của phương  trình bậc 2: ax2+bx+c=0 (a≠0).  Phân tích: bài toán giải phương trình bậc hai là bài toán rất quen thuộc với  học   sinh   trong   toán   học.   Qua   bài   toán   các   em   thấy   được   ứng   dụng   giải  phương trình bậc hai trong máy tính cầm tay được cài  đặt tương tự  như  chương trình đề xuất. Chương trình đề xuất: program Giai_ptb2; uses crt; var a,b,c:real; d,x1,x2:real; begin Clrscr; Write('Nhap he so a,b,c:'); readln(a,b,c); D:=b*b-4*a*c; if d
  7. Chương trình đề xuất program Nam_nhuan; uses crt; var N, SN: integer; begin clrscr; write('Nam: '); readln(N); if (N mod 400 = 0)or((N mod 4 = 0)and( N mod 100 0)) then SN:= 366 else SN:= 365; writeln(' So ngay cua nam ', N,' la ', SN); readln end. Bài 3: Ứng dụng trong viết phần mềm học toán của trẻ em Bài toán: Những ngày nghỉ học vì dịch bệnh Covid­19 An ở nhà phải trông em  thấy đứa em lớp 1 học toán bằng phần mềm trên máy tính. Khi nhập kết quả  tổng của hai số  a và b bất kỳ  thì máy tính đưa ra Đúng hay Sai? An nghĩ cái   này dễ mà, kỳ I học Tin mình đã được học cấu trúc rẽ nhánh có gì mà không   viết được. Em giúp An viết chương trình nhập vào hai số  nguyên a, b từ bàn  phím. Máy hiển thị a+b=? Người dùng nhập kết quả. Máy hiển thị “Bạn làm  đúng rồi” hoặc “Rất tiếc bạn làm sai rồi”. Phân tích: Các phần mềm học của trẻ em thường sử dụng rất nhiều câu lệnh  if – then để  viết ví dụ  như: nếu gõ đáp án đúng thì thế  nào, nếu chọn hình   đúng thì thế nào….Qua bài toán này để học sinh thêm yêu thích lập trình. Chương trình đề xuất: program Hoc_Toan; uses crt; var a,b,c:integer; begin clrscr; write('Nhap a='); readln(a); write('Nhap b='); readln(b); write(a,'+',b,'='); readln(c); if c=a+b then write('Ban lam dung roi!') else write('Ban lam sai roi!'); readln end. Bài 4: Ứng dụng trong toán hình học Bài toán: Nhà trường có một khoảng đất trống sau thư viện và giao cho mỗi  lớp một mảnh vườn hình chữ nhật hoặc hình vuông để trồng hoa. 7
  8. a.i.1.a.Điều kiện là hình vuông hay hình chữ nhật? An muốn biết mảnh vườn của lớp mình là hình vuông hay hình chữ nhật. Em  giúp An viết chương trình nhập vào vào độ hai đỉnh đối trên trái và dưới phải  của một tứ giác lồi có các cạnh song song với các trục tọa độ và có tọa độ các  đỉnh là nguyên (như hình dưới).  Hình 3 Kiểm tra xem tứ giác này có phải là hình vuông hay không. Nếu đúng thì đưa  ra thông báo “HINH VUONG”, ngược lại thì đưa ra thông báo “HINH CHU  NHAT”. Phân tích: Vì các cạnh song song với trục tọa độ nên từ đỉnh trên trái và đỉnh  dưới phải có thể  suy ra tọa độ  của đỉnh trên phải là (u,y). Điều kiện để  là   hình vuông thêm là hai cạnh kề  bằng nhau. Tính độ  dài cạnh trên và độ  dài   cạnh bên phải => điều kiện là: =   =>  =  Chương trình đề xuất: program HV_HCN; uses crt; var x,y,u,v:longint; begin clrscr; write('Nhap toa do dinh tren trai (x,y):'); readln(x,y); write('Nhap toa do dinh duoi phai (u,v):'); readln(u,v); 8
  9. if abs(u-x) = abs(v-y) then write('HINH VUONG') else write('HINH CHU NHAT'); readln end. a.i.1.b. Điều kiện là tam giác và là tam giác gì? Để cho vườn hoa của lớp mình đặc sắc các bạn trong lớp muốn các cây hoa   trồng sẽ  tạo thành một tam giác vuông. Em giúp An viết chương trình nhập   vào 3 số  nguyên a, b, c. Kiểm tra xem 3 số   đó có tạo thành tam giác hay  không? Nếu là tam giác thì có là tam giác vuông hay không? Phân tích: Điều kiện để 3 số là độ dài 3 cạnh của tam giác là  tổng độ dài hai   cạnh bất kỳ lớn hơn cạnh còn lại. Điều kiện để  tam giác đã cho khi biết độ  dài 3 cạnh là tam giác vuông dựa vào định lý pitago: bình phương cạnh huyền  bằng tổng bình phương hai cạnh góc vuông. Chương trình đề xuất: program Tam_giac; uses crt; var a,b,c:longint; begin clrscr; write('Nhap 3 so nguyen a, b, c:'); readln(a,b,c); if (a+b>c) or (a+c>b) or (b+c>a) then begin write('La tam giac'); if (a*a+b*b=c*c) or (b*b+c*c=a*a) or (c*c+a*a=b*b) then write(' Tam giac vuong') else write('Khong vuong'); end else write('Khong la tam giac'); readln end. Bài 5: Vườn bách thú Bài toán: Lần đầu tiên An được đi chơi vườn bách thú An thích nhất các con  sếu vì nhiều con trong số chúng đứng một chân trông rất ngộ  nghĩnh, khi đó  chân kia không thấy đâu như  vốn sinh ra chúng đã chỉ  có một chân. An đếm  được tất cả  a chân. Sau khi đi xem các con thú khác An lại quay về  chỗ  chuồng sếu. Một số  con đã thay đổi vị  trí và cách đứng, An đếm lại lần nữa  và có số chân là b. Qua số  chân thì không thể  xác định chính xác có tất cả  bao nhiêu con  sếu trong chuồng nhưng An vẫn muốn biết có ít nhất và nhiều nhất là bao  nhiêu con. Hãy xác định và đưa ra màn hình số  lượng sếu tối thiểu và tối đa.  9
  10. Các số  a và b được nhập từ  bàn phím. Ví dụ, với a=3 và b=4, số  lượng sếu  tối thiểu là 2 và tối đa là 3. Phân tích: Số  liệu quan sát là a chân. Giả  sử  là mỗi con đứng 2 chân thì số  lượng sếu tối thiểu sẽ là phần nguyên của a+1 chia cho 2. Số  lượng sếu tối   đa sẽ  là a coi như mỗi con đứng 1 chân. Tương tự  số  liệu quan sát là b cũng   vậy. Kết quả ta có bảng dưới đây: Số liệu quan sát Số lượng sếu tối thiểu Số lượng sếu tối đa a [] a b [] b Kết quả max{, } min{a,b} Chương trình đề xuất: program vuon_bach_thu; uses crt; var a,b,c,d,max,min:byte; begin clrscr; write('Nhap a=:'); readln(a); write('Nhap b=:'); readln(b); c:=(a+1)div 2; d:=(b+1) div 2; if c > d then max:=c else max:=d; if a >b then min:=b else min:=a; writeln('So luong seu toi da la:',min); writeln('So luong seu toi thieu la:',max); readln end. Bài 6: Ứng dụng trong tính hoa hồng kinh doanh Bài toán: Tèo thấy bây giờ  người ta đăng bán hàng qua facebook rất nhiều.   Qua tìm hiểu Tèo thấy đấy là xu hướng kinh doanh tất yếu của thời đại công   nghiệp 4.0 nên Tèo cũng muốn thử. Tèo tìm hiểu vì mình đang đi học và chưa  có vốn nên Tèo sẽ đăng bài cho một công ty, nếu bán được sản phẩm thì Tèo   sẽ  được hưởng hoa hồng, với mức hoa hồng theo doanh số  bán hàng tháng  như sau:  5% nếu tổng doanh số nhỏ hơn hoặc bằng 2 triệu. 10% nếu tổng doanh số lớn hơn 2 triệu và nhỏ hơn hoặc bằng 4 triệu.  20 % nếu tổng doanh số là lớn hơn 4 triệu. 10
  11. Tèo muốn tính hoa hồng mà mình được hưởng dựa trên doanh số  bán hàng.  Em hãy giúp Tèo lập trình nhập vào từ bàn phím doanh số bán hàng (theo đơn  vị tiền triệu) của Tèo mỗi tháng và đưa ra màn hình số tiền hoa hồng mà Tèo   được hưởng? Phân tích: Tương tự  bài trên sử  dụng câu lệnh if – then lồng nhau với điều   kiện là doanh thu nằm trong những điều kiện đề  bài cho. Qua bài toán học   sinh thấy được xu hướng kinh doanh online trong thời đại công nghệ 4.0 Chương trình đề xuất program Tinh_hoa_hong; uses crt; var a:longint; h:real; begin clrscr; write('Nhap doanh so cua ban (tinh bang trieu):'); readln(a); if a
  12. Chương trình đề xuất program Xep_loai; uses crt; var a:integer; begin clrscr; write('Nhap diem ne nep:'); readln(a); if a>=160 then write('Loai A') else if(a>=130) and (a=100) and (aq thì cộng 3 điểm cho đội A, nếu p
  13. if uv then b:=b+3 else begin b:=b+1; c:=b+1; end; writeln('Diem cua doi A la:',a); writeln('Diem cua doi B la:',b); writeln('Diem cua doi C la:',c); readln end. Bài 9: Bầu ban cán sự lớp Bài toán: Đầu năm học lớp Tèo bầu lớp trưởng. Kết quả bầu lớp trưởng cho   biết bạn An được p phiếu, bạn Vinh được q phiếu, bạn Quang được r phiếu.   Ai có phiếu cao nhất sẽ làm lớp trưởng. Nếu có hai phiếu cùng đạt số  phiếu  cao nhất hoặc cả ba bạn có cùng số phiếu thì phải bầu lại. Em giúp Tèo viết   chương trình xác định tên bạn được làm lớp trưởng hay thông báo “BAU   LAI”. Phân tích: Áp dụng thuật toán tìm max trong 3 số  p, q, r. Xét nếu p
  14. if max= r then writeln('Ban la lop truong la: Quang'); end; end; readln end. Bài 10: Tính tiền điện, tiền nước, tiền taxi Bài toán: Tèo đi học về  thấy mẹ  đang cầm hóa đơn tiền điện và thắc mắc  sao tiền điện nhiều thế nhỉ? Tèo muốn kiểm tra xem phần mềm tính điện in   hóa đơn điện nhà mình có đúng không? Em giúp Tèo lập trình tính số  tiền   điện phải trả  thực tế (bao gồm cả  10% thuế giá trị  giá tăng) mỗi tháng biết   bảng giá bán lẻ điện sinh hoạt được tính như sau:  Hình 4 Phân tích: Sử dụng các câu lệnh if – then lồng nhau với điều kiện là số điện   thuộc 6 mức trên. Qua bài toán học sinh biết được cách tính tiền điện sinh  hoạt trong thực tế như thế nào? Thấy được vấn đề mình học được ứng dụng  trong cuộc sống hàng ngày ra sao?  Chương trình đề xuất: program Tinh_tien_dien; uses crt; var a,t:longint; begin clrscr; write('Nhap so dien tieu thu:'); readln(a); if a50) and (a100) and (a
  15. else if (a>200) and (a300) and (a
  16. assign(output,'hotel.out'); rewrite(output); read(n); if n mod 3 = 0 then write(0,' ',n div 3) else if n mod 3 =1 then write(2,' ',(n div 3) -1 else write(1,' ',n div 3); close(input); close(output); end. Bài 12: Gieo xúc xắc (Đề thi HSG lớp 12 tỉnh Vĩnh Phúc năm 2017 – 2018) Bài toán: Bờm và Cuội chơi trò chơi gieo xúc xắc như sau: có thể gieo nhiều  lần,  ở  mỗi lần gieo, điểm của Bờm là số  chấm  ở  mặt ngửa lên trên, điểm  của Cuội là số  chấm  ở  mặt úp xuống sàn; khi kết thúc, tổng điểm của mỗi   người được mang ra so sánh để phân định thắng thua. Nhắc lại rằng xúc xắc   là khối lập phương với số chấm ở các cặp mặt đối diện là 1 – 6, 2 – 5, 3 – 4. Cuộc chơi sắp bắt đầu thì Cuội có việc phải ra ngoài, vì vậy Bờm sẽ  là   người gieo xúc xắc còn Phú ông được nhờ  giám sát. Khi Cuội quay lại, Phú   ông cho biết tổng điểm hiện có của Bờm là N, nhưng Phú ông và Bờm đều   không nhớ chính xác đã gieo bao nhiêu lần, vì vậy họ gặp khó khăn trong việc  xác định tổng điểm của Cuội. Ba người muốn nhờ  bạn xác định tổng điểm  nhỏ nhất có thể, lớn nhất có thể của Cuội. Dữ  liệu: Một dòng duy nhất ghi số  nguyên N (1≤N≤1010) là tổng điểm hiện  có của Bờm. Kết quả:  Một dòng duy nhất ghi hai số  nguyên theo thứ  tự  tổng điểm nhỏ  nhất và tổng điểm lớn nhất có thể của Cuội. Ví dụ: dicenor.inp dicenor.out 2 5 12 36 6 216 Phân tích: Để  điểm lớn nhất của Cuội thì điểm của Bờm qua mỗi lần gieo  sẽ là 1 điểm, như vậy số lần gieo để Cuội được điểm lớn nhất là N, số điểm  lớn nhất của Cuội sẽ là 6xN.  Tương tự để điểm nhỏ nhất của Cuội thì điểm của Bờm qua mỗi lần gieo sẽ  là 6 điểm, như vậy số lần gieo để Cuội được điểm nhỏ nhất là N chia cho 6,   số dư còn lại là điểm của Bờm lần cuối, thì điểm của Cuội lần cuối sẽ là 7 –   số dư đó (vì tổng 2 mặt của xúc xắc là 7). Chương trình đề xuất: 16
  17. var n,min,max:int64; begin assign(input,'dicenor.inp'); reset(input); assign(output,'dicenor.out'); rewrite(output); read(n); max:=n*6; if n mod 6= 0 then min:= n div 6 else min:= n div 6 + (7 - (n mod 6)); write(min,' ',max); close(input); close(output); end. Bài 13: IQ Test (Đề thi HSG lớp 12 tỉnh Vĩnh Phúc năm 2014 – 2015) Bài toán: Harry đang chuẩn bị cho kỳ thi kiểm tra IQ và Harry cũng được biết   rằng có nhiều câu hỏi dạng: cho một dãy số, tìm số  tiếp theo trong dãy. Bây  giờ  Harry mới chỉ  có thể  giải quyết các câu hỏi như  trên dưới dạng cấp số  cộng hoặc cấp số nhân: Cấp số cộng là dãy a1, a1+d, a1+2d, a1+3d,…,a1+(n­1)d trong đó a1 và d là  bất kỳ. Cấp số  nhân là dãy b1, b2=b1q, b3=b2q,…, bn=bn­1q trong đó b1≠0, q≠0,  q≠1. Hãy giúp Harry viết một chương trình xác định xem dãy đã cho là cấp số  cộng hay là cấp số  nhân và cũng từ  đó để  tìm ra số  tiếp theo trong dãy. Nếu  dãy đã cho không phải là cấp số cộng và cũng không phải là cấp số nhân, hãy  in ra 42 (đó là câu trả lời tốt nhất mà Harry có thể tìm được). Bạn cũng sẽ in  ra 42 nếu phần tử  tiếp theo trong dãy đó không phải là số  nguyên. Dĩ nhiên  câu trả lời luôn là số nguyên. Dữ  liệu:  Một dòng duy nhất ghi 4 số  nguyên trong đó mỗi số  cách nhau ít  nhất bởi một dấu cách, mỗi số đều thuộc đoạn [1;1000]. Kết quả: Nếu dãy đã cho là cấp số cộng hoặc cấp số nhân, in ra phần tử tiếp  theo trong dãy đã cho. Ngược lại in ra số 42. Ví dụ: iqtest.inp iqtest.out 11 234 457 680 903 32 16 8 4 2 1 89 6 55 42 17
  18. Phân tích: Gọi 4 số đó là a, b, c, d. Trong toán các em đã được học điều kiện  1 dãy là cấp số  cộng, cấp số  nhân khi nào? Nên điều kiện là cấp số  cộng:  a+c=2b và b+d =2c. Điều kiện là cấp số nhân là ac=bb và bd=cc. Chú ý là phải   sử dụng if – then lồng nhau vì có 3 trường hợp. Chương trình đề xuất: var a,b,c,d:integer; begin assign(input,'iqtest.inp'); reset(input); assign(output,'iqtest.out'); rewrite(output); read(a,b,c,d); if (a+c=2*b) and (b+d=2*c) then write(2*d-c) else if (a*c=b*b) and (b*d=c*c) then write(d*d/c:0:0) {vì đề cho luôn là số nguyên nên lấy phần phân là 0} else write(42); close(input); close(output); end. Bài 14: Táo quân  Bài toán:  Có m ông táo và n bà táo được Ngọc Hoàng phân công nhiệm vụ  trong năm mới. Đầu tiên Ngọc Hoàng chọn k táo (ông hoặc bà) làm những  nhiệm vụ  đặc biệt tại các Bộ/Ngành, sau đó Ngọc Hoàng sẽ  chọn ra các   nhóm, mỗi nhóm gồm đúng 2 ông táo và 1 bà táo để phân công xuống các gia   đình dưới hạ giới. Yêu cầu: Hãy giúp Ngọc Hoàng xác định số  nhóm nhiều nhất để  phân công  xuống các gia đình dưới hạ giới. Ví dụ có m=12 ông táo và n=7 bà táo, có k=5 táo phải làm nhiệm vụ đặc biệt.  Ngọc Hoàng có thể chọn tối đa 4 nhóm phân xuống các gia đình (8 ông táo và   4 bà táo). Trong 7 tào còn lại (4 ông và 3 bà) có 5 táo làm nhiệm vụ đặc biệt,  còn 2 táo không được phân việc. Dữ liệu: Một dòng duy nhất gồm 3 số nguyên dương m, n, k ≤ 109 cách nhau  ít nhất một dấu cách. Kết quả: Một số nguyên duy nhất là số nhóm nhiều nhất chọn được để phân  xuống các gia đình dưới hạ giới. Ví dụ: laser.input laser.out 12 7 5 4 18
  19. Phân tích: Vì 1 bà đi với 2 ông nên chúng ta chia làm 2 trường hợp: Trường  hợp số  bà táo mà lớn hơn số  ông táo chia 2 thì tính số  k và số  n mới hoặc  trường hợp số bà táo ít hơn số  ông táo chia 2 thì tính số  k và m mới. Trường   hợp k  m div 2 then begin k := k - (n - m div 2); n := m div 2; end; if m > 2 * n then begin k := k - (m - 2 * n); m := 2 * n; end; if k
  20. Một máy tính có thể  lắp ráp được khi khối hệ  thống hỗ  trợ  giao diện   tương ứng của màn hình. Yêu cầu: Xác định số máy tính có thể lắp ráp được. Dữ liệu: Gồm 2 dòng :  Dòng 1: Ghi 3 số nguyên a1, a2 và a3 (0 ≤ a1, a2, a3 ≤ 100) Dòng 2: Ghi 3 số nguyên b1, b2 và b3 (0 ≤ b1, b2, b3 ≤ 100). Kết quả: Gồm 1 dòng duy nhất ghi kết quả tìm được. Ví dụ: computer.inp computer.out 3 4 6 12 2 11 0 Phân tích: Vì a1 chỉ ghép được với b1 nên so sánh a1 với b1, nếu thừa a1 thì  so sánh với b3, nếu thừa b1 thì so sánh với a3. Tương tự cũng so sánh a2 với   b2 như trên. Cuối cùng so sánh a3, b3 còn lại. Chương trình đề xuất: var a1,a2,a3,b1,b2,b3,du,du1,s:integer; begin assign(input,'computer.inp'); reset(input); assign(output,'computer.out'); rewrite(output); readln(a1,a2,a3); read(b1,b2,b3); if a1
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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