Toán lớp 1

Liên hệ QC

nguyentranduc1978

Unsurpassed Сasual Dating - Genuine Females
Tham gia
26/4/08
Bài viết
58
Được thích
4
Giới tính
Nam
Nghề nghiệp
Health
Tình hình F1 nhà em lên lớp 2 mà tính toán cộng trừ chậm quá, em làm file cho cháu nó học (cộng trừ trong phạm vi 100 trong phạm vi các số có 1, 2 chữ số. Nếu được >100 với số 2,3 chữ số càng tốt :) ). Em đã tham khảo ở trên diễn đàn và copy 1 file của một bác về chỉnh sửa (có chế độ random khi bấm nút tạo đề mới) mà nghe chừng chưa đủ trình độ vì phát sinh nhiều cái ngoài khả năng (cộng quá phạm vi, trừ 2 số ngẫu nhiên dính số bị trừ nhỏ hơn số trừ ….) nên đành nhờ các bác giúp em

Nếu sai sót đăng bài nhầm chuyên mục em nhờ min, mod chuyển bài hộ em
 

File đính kèm

  • Toan lop1.xls
    50.5 KB · Đọc: 70
Lần chỉnh sửa cuối:
Lần chỉnh sửa cuối:
Thử công thức này tại F5:

Mã:
=INT(RAND()*B5)+1

Code:
Mã:
Sub Macro2()
    With ThisWorkbook.Worksheets("Tru")
        .Range("D5:D14").Value = Range("F5:F14").Value
    End With
End Sub
Bác xem giúp:
Cộng không nhớ trong phạm vi 10
Cộng số 2 chữ số và 1 chữ số không nhớ trong phạm vi 20
Cộng 2 số có 2 chữ số, không nhớ trong phạm vi 100
 
Bạn xài excel 2003 hay lớn hơn? Dùng RANDBETWEEN dễ hơn dùng RAND
 
Cộng 2 số có 2 chữ số, không nhớ trong phạm vi 100
Thử:
Mã:
Sub Cong2SoPhamvi100KhongNho()
Dim Arr1(1 To 10, 1 To 1), Arr2(1 To 10, 1 To 1)
Dim i As Long, temp As Long
Dim DV As Byte, HC As Byte

For i = 1 To 10
temp = Application.RandBetween(10, 89)
Arr1(i, 1) = temp
    DV = 9 - (temp Mod 10)
    If DV > 0 Then DV = Application.RandBetween(1, DV)
    HC = 9 - (temp \ 10)
    HC = Application.RandBetween(1, HC)
Arr2(i, 1) = HC * 10 + DV
Next i
    With ThisWorkbook.Worksheets("Cong")
        .Range("B5:B14").Value = Arr1
        .Range("D5:D14").Value = Arr2
    End With
End Sub
 
@phuocam:

Loại vấn đề này không phải chỉ cốt kiếc rồi cho ra mấy con số.
Dạy trẻ tuổi này mà dùng máy là làm hư chúng.
Để tập làm toán, ta phải in ra giấy và cho chúng làm bằng tay (viết tay)

Vì vậy, bài này thiết kế quan trọng hơn code.

Một tờ giấy A4 được chia ra làm 6 phần; tức là 6 con toán. Mỗi con toán chiếm 4 cột và 3 dòng. Cột đầu tiên chứa dấu (+ hoặc -). Ba cột kế tiếp là hàng trăm, chục và đơn vị. Dòng thứ hai được gạch đít để phân giữa hai dòng bài toán và dòng ghi kết quả.
Sau khi vẽ xong cái mẫu rồi thì mới tính đến cốt:
Vòng lặp sẽ chạy 6 lần. Mỗi lần ghi một con toán. Mỗi con toán được tính trong một mảng 2x3.
Sau khi ghi xong một trang thì xem lại, hợp ý thì in ra; và chạy trang tiếp.
Kinh nghiệm cho tôi biết hai ngày đầu chỉ cho làm 1 trang, ngày thứ 3 tăng lên 2 trang, và tăng dần đến một tuần sau thì 3 hoặc 4 trang. Về sau này trẻ quen rồi thì toán nhân chia cũng khoảng 18-24 bài một ngày (tuỳ theo muốn cho học nhiều hay ít)

Code thiết lập một con toán nên viết riêng ra thành 1 hàm. Và không nên bắt 1 hàm phải làm nhiều quá.
- Loại toán không nhớ viết thành 1 hàm riêng
- Loại toán có nhớ viết thành 1 hàm riêng
- Toán trừ không nhớ viết riêng
- Toán trừ có nhớ viết riêng

Sau khi đã có code sơ khởi là lúc bắt đầu cải thiện
- Thêm một hàm xét nếu vế dưới lớn hơn vế trên thì đảo nghịch chúng.
- Thêm một chức năng để thay thế 1 trong 6 con tính trên tờ giấy. Lý do: lúc chạy xong, bạn sẽ thấy có những con số bị lặp lại, hoặc có những con số rất kỳ quặc, giải pháp dễ nhất là thay con tính ấy.

Cái này tôi tư vấn nhiều ngừoi rồi. Và rất hữu hiệu.
 
Thế hệ ai phôn, CNTT mà. Mọi lúc, mọi nơi, ngay cả đi đường, dù đi bộ hay đi xe, đều dán mắt vào ai phôn. Nhiều khi gặp gỡ nhau nhưng chỉ là ngồi cùng nhau một cái bàn chứ không phải nói chuyện, giao lưu với nhau. Ai cũng cắm mặt vào ai phôn, thỉnh thoảng mới mở đôi lời với người ngồi cùng. Sách cũng chỉ đọc trên mạng, trên máy tính. Dần rồi quen. Con người mất kỹ năng nói chuyện, giao tiếp. Có nói có viết cho nhau cũng chỉ là "hi, tks ...", ý nghĩ của chính mình mà không biết diễn đạt cho người khác hiểu ...
 
@phuocam:

Loại vấn đề này không phải chỉ cốt kiếc rồi cho ra mấy con số.
Dạy trẻ tuổi này mà dùng máy là làm hư chúng.
Để tập làm toán, ta phải in ra giấy và cho chúng làm bằng tay (viết tay)

Vì vậy, bài này thiết kế quan trọng hơn code.

Một tờ giấy A4 được chia ra làm 6 phần; tức là 6 con toán. Mỗi con toán chiếm 4 cột và 3 dòng. Cột đầu tiên chứa dấu (+ hoặc -). Ba cột kế tiếp là hàng trăm, chục và đơn vị. Dòng thứ hai được gạch đít để phân giữa hai dòng bài toán và dòng ghi kết quả.
Sau khi vẽ xong cái mẫu rồi thì mới tính đến cốt:
Vòng lặp sẽ chạy 6 lần. Mỗi lần ghi một con toán. Mỗi con toán được tính trong một mảng 2x3.
Sau khi ghi xong một trang thì xem lại, hợp ý thì in ra; và chạy trang tiếp.
Kinh nghiệm cho tôi biết hai ngày đầu chỉ cho làm 1 trang, ngày thứ 3 tăng lên 2 trang, và tăng dần đến một tuần sau thì 3 hoặc 4 trang. Về sau này trẻ quen rồi thì toán nhân chia cũng khoảng 18-24 bài một ngày (tuỳ theo muốn cho học nhiều hay ít)

Code thiết lập một con toán nên viết riêng ra thành 1 hàm. Và không nên bắt 1 hàm phải làm nhiều quá.
- Loại toán không nhớ viết thành 1 hàm riêng
- Loại toán có nhớ viết thành 1 hàm riêng
- Toán trừ không nhớ viết riêng
- Toán trừ có nhớ viết riêng

Sau khi đã có code sơ khởi là lúc bắt đầu cải thiện
- Thêm một hàm xét nếu vế dưới lớn hơn vế trên thì đảo nghịch chúng.
- Thêm một chức năng để thay thế 1 trong 6 con tính trên tờ giấy. Lý do: lúc chạy xong, bạn sẽ thấy có những con số bị lặp lại, hoặc có những con số rất kỳ quặc, giải pháp dễ nhất là thay con tính ấy.

Cái này tôi tư vấn nhiều ngừoi rồi. Và rất hữu hiệu.
Bác có file up lên em Xin. Những mục bác viets em nhất trí, còn vận dungj thì tuỳ từng trường hợp và suy nghĩ mỗi nguời theo hoàn cahr cụ thể đánh giá đêể có phương pháp phù hơợp
 
Toán cộng từng số thực ra chỉ là cách dạy trẻ đếm bằng ngón tay, từ từ rồi chúng tự động nhớ. Lúc nhỏ tôi hơi tối dạ, hầu hết bạn trong lớp tự tính nhẩm được rồi mà tôi vẫn còn thuộc về số ít đếm tay. Tuy nhiên điều này không hề cản trở việc làm tính của tôi.
Khởi đầu chỉ là một cái bảng, viết 2 con số rồi bảo nó cộng. Ví dụ tôi viết số 3 trên số 5 rồi bảo nó đếm tay và viết kết quả xuống. Với lối này chỉ cần 3 ngày là trẻ thông thuộc (thực ra chỉ cần 5 phút là biết làm, nhưng cần 3 ngày để hoàn toàn thuộc làu). Khi trẻ làu rồi thì chuyển qua 2 số với kết quả lớn hơn 10. Sau đó mới tới cộng các số có hàng chục, hàng trăm.
Thuở xa xưa, các toán gia Hy lạp làm toán bằng cách vẽ lên cát. Thuở tôi đi học thì có cái bảng đen nhỏ, lớn hơn quyển vở học một chút, viết bằng phấn. Đời con tôi đi học dân có tiền sắm loại mặt plastic, viết xong kéo 1 lượt thì nó xoá. Đời bây giờ còn dễ hơn, bảng là bảng trắng, sạch sẽ dễ dàng.
Thế thì "hoàn cảnh cụ thể" và "phương pháp phù hợp" là gì? Có phải chăng là hoàn cảnh "có sẵn" cái láp tốp, và phương pháp "dạy bấm ngón tay"?

Trẻ chúng nhìn trên gương người lớn. Khi kèm trẻ học yếu thì phải tận tâm. Chúng phải THẤY được là người dạy bỏ nhiều công sức và thời giờ. Ở tuổi 5-6, chúng chưa biết được cái "khổ" của cha mẹ phải nặn túi ra cái láp tốp đâu.
 
Bạn muốn cho cháu học bằng cách in ra giấy hay học trực tiếp trên máy tính?
Em in ra giấy cho đỡ hại mắt. Nhưng có những file làm đề để in tiện hơn là ngồi gõ từng bài. Cháu nó hơi chậm nên chắc phải làm nhiều
 
Thiết kế trang giấy rồi đưa file lên đây. Tôi sẽ mách cho cách code.
 
Thiết kế trang giấy rồi đưa file lên đây. Tôi sẽ mách cho cách code.
Em tạm làm thế này vì cũng đang bận chưa có thời gian làm them phần cộng trừ trong phạm vi không nhớ trong 20 và cộng trừ có nhớ ....
 

File đính kèm

  • Toan lop1.xls
    103 KB · Đọc: 38
Copy (hoặc đổi tên) sheet "1" thành "CongNgang", và sheet "2" thành "TruNgang"
Xong chạy Sub FillPageCongNgang, và Sub FillPageTruNgang
Gán chúng cho nút bấm nếu muốn.
Cách làm 2 sheets "3" và "4" cũng đại khái vậy thôi

Mã:
Sub FillPageCongNgang()
' fills a page (sheet) with pairs of randomly generated numbers
Dim a(1 To 23, 1 To 13), aa
Dim i As Integer
Randomize
For i = 1 To 23
If InStr(",1,12,13,", "," & i & ",") < 1 Then ' exclude some rows
aa = GetDigitPairAdd(10)
a(i, 1) = aa(1)
a(i, 2) = "+"
a(i, 3) = aa(2)
a(i, 4) = "="
aa = GetDigitPairAdd(10)
a(i, 8) = aa(1)
a(i, 9) = "+"
a(i, 10) = aa(2)
a(i, 11) = "="
End If
Next i
Sheets("CongNgang").Range("A1").Resize(23, 13) = a
End Sub

Sub FillPageTruNgang()
' fills a page (sheet) with pairs of randomly generated numbers
Dim a(1 To 23, 1 To 13), aa
Dim i As Integer
Randomize
For i = 1 To 23
If InStr(",1,12,13,", "," & i & ",") < 1 Then ' exclude some rows
aa = GetDigitPairSubtract()
a(i, 1) = aa(1)
a(i, 2) = "-"
a(i, 3) = aa(2)
a(i, 4) = "="
aa = GetDigitPairSubtract()
a(i, 8) = aa(1)
a(i, 9) = "-"
a(i, 10) = aa(2)
a(i, 11) = "="
End If
Next i
Sheets("TruNgang").Range("A1").Resize(23, 13) = a
End Sub

Function RandomNum(lo As Integer, hi As Integer) As Integer
' generates a random number between lo and hi inclusive
RandomNum = Int((hi - lo + 1) * Rnd + lo)
End Function

Function GetDigitPairAdd(Optional ByVal top As Integer) As Variant
' gets a pair of randomly generated digtis
Const DIGITLIST = "0122334456789" ' the use of this list is to give preference to certain digits
Dim a(1 To 2) As Integer
Dim ln As Integer, cLimit As Integer
If top = 0 Then top = 18
ln = Len(DIGITLIST)
For cLimit = 1 To 100
a(1) = Val(Mid(DIGITLIST, RandomNum(1, ln), 1))
a(2) = Val(Mid(DIGITLIST, RandomNum(1, ln), 1))
If a(1) + a(2) <= top Then Exit For
Next cLimit
GetDigitPairAdd = a
End Function

Function GetDigitPairSubtract() As Variant
' gets a pair of randomly generated digtis
Const DIGITLIST = "0123445566778899" ' the use of this list is to give preference to certain digits
Dim a(1 To 2) As Integer
Dim ln As Integer, tem As Integer
ln = Len(DIGITLIST)
a(1) = Val(Mid(DIGITLIST, RandomNum(1, ln), 1))
a(2) = Val(Mid(DIGITLIST, RandomNum(1, ln), 1))
If a(2) > a(1) Then
tem = a(1)
a(1) = a(2)
a(2) = tem
End If
GetDigitPairSubtract = a
End Function
 
Copy (hoặc đổi tên) sheet "1" thành "CongNgang", và sheet "2" thành "TruNgang"
Xong chạy Sub FillPageCongNgang, và Sub FillPageTruNgang
Gán chúng cho nút bấm nếu muốn.
Cách làm 2 sheets "3" và "4" cũng đại khái vậy thôi

Mã:
Sub FillPageCongNgang()
' fills a page (sheet) with pairs of randomly generated numbers
Dim a(1 To 23, 1 To 13), aa
Dim i As Integer
Randomize
For i = 1 To 23
If InStr(",1,12,13,", "," & i & ",") < 1 Then ' exclude some rows
aa = GetDigitPairAdd(10)
a(i, 1) = aa(1)
a(i, 2) = "+"
a(i, 3) = aa(2)
a(i, 4) = "="
aa = GetDigitPairAdd(10)
a(i, 8) = aa(1)
a(i, 9) = "+"
a(i, 10) = aa(2)
a(i, 11) = "="
End If
Next i
Sheets("CongNgang").Range("A1").Resize(23, 13) = a
End Sub

Sub FillPageTruNgang()
' fills a page (sheet) with pairs of randomly generated numbers
Dim a(1 To 23, 1 To 13), aa
Dim i As Integer
Randomize
For i = 1 To 23
If InStr(",1,12,13,", "," & i & ",") < 1 Then ' exclude some rows
aa = GetDigitPairSubtract()
a(i, 1) = aa(1)
a(i, 2) = "-"
a(i, 3) = aa(2)
a(i, 4) = "="
aa = GetDigitPairSubtract()
a(i, 8) = aa(1)
a(i, 9) = "-"
a(i, 10) = aa(2)
a(i, 11) = "="
End If
Next i
Sheets("TruNgang").Range("A1").Resize(23, 13) = a
End Sub

Function RandomNum(lo As Integer, hi As Integer) As Integer
' generates a random number between lo and hi inclusive
RandomNum = Int((hi - lo + 1) * Rnd + lo)
End Function

Function GetDigitPairAdd(Optional ByVal top As Integer) As Variant
' gets a pair of randomly generated digtis
Const DIGITLIST = "0122334456789" ' the use of this list is to give preference to certain digits
Dim a(1 To 2) As Integer
Dim ln As Integer, cLimit As Integer
If top = 0 Then top = 18
ln = Len(DIGITLIST)
For cLimit = 1 To 100
a(1) = Val(Mid(DIGITLIST, RandomNum(1, ln), 1))
a(2) = Val(Mid(DIGITLIST, RandomNum(1, ln), 1))
If a(1) + a(2) <= top Then Exit For
Next cLimit
GetDigitPairAdd = a
End Function

Function GetDigitPairSubtract() As Variant
' gets a pair of randomly generated digtis
Const DIGITLIST = "0123445566778899" ' the use of this list is to give preference to certain digits
Dim a(1 To 2) As Integer
Dim ln As Integer, tem As Integer
ln = Len(DIGITLIST)
a(1) = Val(Mid(DIGITLIST, RandomNum(1, ln), 1))
a(2) = Val(Mid(DIGITLIST, RandomNum(1, ln), 1))
If a(2) > a(1) Then
tem = a(1)
a(1) = a(2)
a(2) = tem
End If
GetDigitPairSubtract = a
End Function
Em cảm ơn bác
 
Toán cộng từng số thực ra chỉ là cách dạy trẻ đếm bằng ngón tay, từ từ rồi chúng tự động nhớ. Lúc nhỏ tôi hơi tối dạ, hầu hết bạn trong lớp tự tính nhẩm được rồi mà tôi vẫn còn thuộc về số ít đếm tay. Tuy nhiên điều này không hề cản trở việc làm tính của tôi.
Khởi đầu chỉ là một cái bảng, viết 2 con số rồi bảo nó cộng. Ví dụ tôi viết số 3 trên số 5 rồi bảo nó đếm tay và viết kết quả xuống. Với lối này chỉ cần 3 ngày là trẻ thông thuộc (thực ra chỉ cần 5 phút là biết làm, nhưng cần 3 ngày để hoàn toàn thuộc làu). Khi trẻ làu rồi thì chuyển qua 2 số với kết quả lớn hơn 10. Sau đó mới tới cộng các số có hàng chục, hàng trăm.
Thuở xa xưa, các toán gia Hy lạp làm toán bằng cách vẽ lên cát. Thuở tôi đi học thì có cái bảng đen nhỏ, lớn hơn quyển vở học một chút, viết bằng phấn. Đời con tôi đi học dân có tiền sắm loại mặt plastic, viết xong kéo 1 lượt thì nó xoá. Đời bây giờ còn dễ hơn, bảng là bảng trắng, sạch sẽ dễ dàng.
Thế thì "hoàn cảnh cụ thể" và "phương pháp phù hợp" là gì? Có phải chăng là hoàn cảnh "có sẵn" cái láp tốp, và phương pháp "dạy bấm ngón tay"?

Trẻ chúng nhìn trên gương người lớn. Khi kèm trẻ học yếu thì phải tận tâm. Chúng phải THẤY được là người dạy bỏ nhiều công sức và thời giờ. Ở tuổi 5-6, chúng chưa biết được cái "khổ" của cha mẹ phải nặn túi ra cái láp tốp đâu.
Liệu đếm bằng ngón tay các cháu sau này có ổn không anh. Sợ số lớn thì khó. Em cũng đang đau đầu với các bạn lớp 1. Cảm ơn bài viết hay của anh.
 
thực ra mình cũng có nghĩ đến cái này. Trước nghịch có viết 1 cái bạn thử xem có thể dùng được không nhé.
- Bạn giải nén file ra để cùng 1 folder rồi chạy file exe là OK
 

File đính kèm

  • Toando.zip
    5.4 MB · Đọc: 52
Web KT
Back
Top Bottom