DạyhọcIntel.net  

Bộ Giáo dục
Đào tạo

Chương trình dạy học
của Intel tại Việt Nam

Tài liệu
Hướng dẫn Kỹ năng

Viện Nghiên cứu Giáo dục
ĐH Sư Phạm TP. HCM

Intel Teach Elements


Trở lại   DạyhọcIntel.net > Góc nghiệp vụ sư phạm > Công tác chuyên môn > Tin Học

Reply
 
Công cụ chủ đề Kiểu hiển thị
Old 25-02-2008, 09:09   #1
Kiểm tra xâu (chuỗi) có đối xứng không?
dancamxuyen dancamxuyen is offline 25-02-2008, 09:09

Trong bài thực hành 5, có bài thế này.
Cho một xâu. Kiểm tra xem xâu đó có phải là xâu đối xứng (palindrom) hay không.
Tôi thấy thuật toán sách giáo khoa đưa ra không tối ưu. Ví dụ như dùng thêm biến xâu mới, phải duyệt hết xâu cho dù xâu đó không là xâu đối xứng. (VÍ dụ: abcfdsgba thì khi kiểm tra đến kí tự thứ 3 là phải dừng lại vì nó không đối xứng rồi). Kể cả các đáp án ở SGV cũng không hay lắm.
Mong các cao nhân cho ý kiến.....................

 
dancamxuyen's Avatar
dancamxuyen
Lớp 3
Points: 1,487, Level: 10 Points: 1,487, Level: 10 Points: 1,487, Level: 10
Activity: 0% Activity: 0% Activity: 0%
Gia nhập: 01-2008
Đơn vị: CX
Bài viết: 69
Cảm ơn: 14
Được cảm ơn 28 lần trong 20 bài
Lượt xem: 12392
Trả lời kèm trích dẫn
Đã cảm ơn dancamxuyen:
Old 25-02-2008, 11:34   #2
admin
Administrators
Points: 159,713, Level: 100 Points: 159,713, Level: 100 Points: 159,713, Level: 100
Activity: 0% Activity: 0% Activity: 0%
 
admin's Avatar
 
Gia nhập: 06-2007
Đơn vị: THPT Mạc Đĩnh Chi - TP. HCM
Bài viết: 1,897
Cảm ơn: 3,615
Được cảm ơn 7,207 lần trong 1,319 bài
Bài viết blog: 6
Mặc định

Thú thiệt mình mê nhất là món lập trình nên rất thích tham gia các chủ đề này.

Mình nghĩ bạn dancamxuyen nên đặt ra mục tiêu thật cụ thể. Vì đối với mỗi mục tiêu khác nhau, ta có những cách giải quyết cũng khác nhau.

Ví dụ: Đối với bài toàn "xâu đối xứng" này, nếu bạn muốn dạy các em hình thành thói quen lập luận căn bản khi lập trình để giải quyết được vấn đề thì thuật toán SGK đưa ra là quá tuyệt. Nhưng nếu bạn muốn nâng cao hiệu quả giải quyết bài toán (dành cho các học sinh giỏi hơn) hoặc muốn chia sẻ với các đồng nghiệp thì cần những thuật toán tối ưu hơn.

Và nếu có thể, bạn nên đăng lại thuật toán trong SGK mà bạn đề cập vì có thể có những giáo viên thích tin học nhưng không dạy tin học sẽ khó theo dõi.
__________________
Khi cuộc sống có động lực mới mạnh mẽ ... bé Khánh Đan!
admin is offline   Trả lời kèm trích dẫn
Đã cảm ơn admin:
Old 25-02-2008, 12:19   #3
dancamxuyen
Lớp 3
Points: 1,487, Level: 10 Points: 1,487, Level: 10 Points: 1,487, Level: 10
Activity: 0% Activity: 0% Activity: 0%
 
dancamxuyen's Avatar
 
Gia nhập: 01-2008
Đơn vị: CX
Bài viết: 69
Cảm ơn: 14
Được cảm ơn 28 lần trong 20 bài
Mặc định

Các góp ý của Admin thật chân tình và đúng đắn. Ghi nhận. Nhưng khi đăng cả các đáp án và bài toán thì dài quá. Với lại tôi nghĩ chuyên mục này phần lớn là giáo viên Tin nên không cần thiết lắm (vì ai cũng biết mà). Thường thì các câu hỏi đặt ra tôi đã làm rồi và xem bàn dân thiên hạ làm như thế nào thôi (có làm như minh hay không thôi).

Chỉnh sửa lần cuối bởi dancamxuyen : 25-02-2008 lúc 12:24 Lý do: Bổ sung
dancamxuyen is offline   Trả lời kèm trích dẫn
Đã cảm ơn dancamxuyen:
Old 25-02-2008, 12:21   #4
dancamxuyen
Lớp 3
Points: 1,487, Level: 10 Points: 1,487, Level: 10 Points: 1,487, Level: 10
Activity: 0% Activity: 0% Activity: 0%
 
dancamxuyen's Avatar
 
Gia nhập: 01-2008
Đơn vị: CX
Bài viết: 69
Cảm ơn: 14
Được cảm ơn 28 lần trong 20 bài
Mặc định

Àh Admin ơi. Em được lên lớp rồi ah. Mừng thật
dancamxuyen is offline   Trả lời kèm trích dẫn
Đã cảm ơn dancamxuyen:
Old 25-02-2008, 12:40   #5
Nhất Điểm Tuyết
Cao học
Points: 6,002, Level: 22 Points: 6,002, Level: 22 Points: 6,002, Level: 22
Activity: 0% Activity: 0% Activity: 0%
 
Nhất Điểm Tuyết's Avatar
 
Gia nhập: 03-2008
Đơn vị: ĐHSP,SG
Bài viết: 1,093
Cảm ơn: 1,243
Được cảm ơn 2,739 lần trong 770 bài
Mặc định

e làm thế này được không ạ
giả bộ cái string đó tên là s và có chiều dài là s.length
ta sẽ chạy một vòng lặp trên biến i chạy từ 1 đến s.length/2 , so sánh s[i] với s[s.length+1-i]
nếu có trường hợp khác nhau thì cắt ngang vòng lặp và kết luận s bất đối xứng. còn nếu vòng lặp kết thúc khi biến i đạt đến giá trị s.length/2 thì kết luận s đối xứng.

hy vọng thầy đừng hỏi e tại sao lại lặp đến trung bình cộng (s.length/2) cũng đúng mà lặp đến tổng (s.length) cũng đúng
__________________

giáo viên nghèo lười dạy

Chỉnh sửa lần cuối bởi hiennguyen : 25-02-2008 lúc 13:01 Lý do: supposing the string index starts at 1
Nhất Điểm Tuyết is offline   Trả lời kèm trích dẫn
Đã cảm ơn Nhất Điểm Tuyết:
Old 25-02-2008, 13:44   #6
admin
Administrators
Points: 159,713, Level: 100 Points: 159,713, Level: 100 Points: 159,713, Level: 100
Activity: 0% Activity: 0% Activity: 0%
 
admin's Avatar
 
Gia nhập: 06-2007
Đơn vị: THPT Mạc Đĩnh Chi - TP. HCM
Bài viết: 1,897
Cảm ơn: 3,615
Được cảm ơn 7,207 lần trong 1,319 bài
Bài viết blog: 6
Mặc định

Trích dẫn:
Nguyên bản bởi dancamxuyen Xem bài viết
Nhưng khi đăng cả các đáp án và bài toán thì dài quá. Với lại tôi nghĩ chuyên mục này phần lớn là giáo viên Tin nên không cần thiết lắm (vì ai cũng biết mà).
Ráng chịu khó thêm một tí đi dancamxuyen để các thầy cô yêu thích tin học khác dễ dàng theo dõi.
__________________
Khi cuộc sống có động lực mới mạnh mẽ ... bé Khánh Đan!
admin is offline   Trả lời kèm trích dẫn
Old 25-02-2008, 13:52   #7
quyenlh
Lớp 10
Points: 6,926, Level: 24 Points: 6,926, Level: 24 Points: 6,926, Level: 24
Activity: 0% Activity: 0% Activity: 0%
 
quyenlh's Avatar
 
Gia nhập: 12-2007
Đơn vị: THPT Tân Hà - Lâm Hà - Lâm Đồng
Bài viết: 210
Cảm ơn: 112
Được cảm ơn 192 lần trong 96 bài
Mặc định

Trích dẫn:
Nguyên bản bởi Admin Xem bài viết
Và nếu có thể, bạn nên đăng lại thuật toán trong SGK mà bạn đề cập vì có thể có những giáo viên thích tin học nhưng không dạy tin học sẽ khó theo dõi.
Bài toán như sau: Nhập vào xâu S, kiểm tra xâu đó có là xâu đối xứng hày không?. Xâu đối xứng có tính chất: đọc nó từ trái sang phải cũng thu được kết quả như đọc từ phải sang trái.
SGK đưa ra 1 cách viết :
Var i,x: Byte; a, p: string;
Begin
write('Nhap xau'); readln(a); x:= length(a);
p:='';
for k:= x to 1 do p:=p+a[i];
if a = p then writeln('Xau doi xung') else writeln('Khong doi xung');
readln
end.
SGK yêu cầu học sinh viết lại chương trình trên và không sử dụng biến trung gian P.
__________________
Hạnh phúc là được cho đi
quyenlh is offline   Trả lời kèm trích dẫn
Đã cảm ơn quyenlh:
Old 25-02-2008, 13:53   #8
admin
Administrators
Points: 159,713, Level: 100 Points: 159,713, Level: 100 Points: 159,713, Level: 100
Activity: 0% Activity: 0% Activity: 0%
 
admin's Avatar
 
Gia nhập: 06-2007
Đơn vị: THPT Mạc Đĩnh Chi - TP. HCM
Bài viết: 1,897
Cảm ơn: 3,615
Được cảm ơn 7,207 lần trong 1,319 bài
Bài viết blog: 6
Mặc định

Mình thích dùng 2 biến chạy hơn cho dễ hiểu và giảm số phép toán (dù bản chất là như nhau):

Mã lệnh:
Var s : String;
    i, j : Integer;

BEGIN
    { Giả sử đã nhập chuỗi s }
    i := 1;
    j := Length(s);

    While (i < j) and (s[i] = s[j]) do
    Begin
        Inc(i);
        Dec(j);
    End;

    If (i < j) then
        Writeln('Chuoi khong doi xung')
    else
        Writeln('Chuoi doi xung');
END.
__________________
Khi cuộc sống có động lực mới mạnh mẽ ... bé Khánh Đan!

Chỉnh sửa lần cuối bởi Admin : 25-02-2008 lúc 15:07
admin is offline   Trả lời kèm trích dẫn
Đã cảm ơn admin:
Old 25-02-2008, 13:57   #9
quyenlh
Lớp 10
Points: 6,926, Level: 24 Points: 6,926, Level: 24 Points: 6,926, Level: 24
Activity: 0% Activity: 0% Activity: 0%
 
quyenlh's Avatar
 
Gia nhập: 12-2007
Đơn vị: THPT Tân Hà - Lâm Hà - Lâm Đồng
Bài viết: 210
Cảm ơn: 112
Được cảm ơn 192 lần trong 96 bài
Mặc định

Tôi đã dạy phần này ở học kì 1 rồi.
Cách làm của tôi giống với ý của bạn Hiennguyen.
Cụ thể chương trình như sau:
Program Palindrom;
Var a: string; n,i: integer;
Begin
writeln(Nhap xau a); readln(a); N:= lenght(a); i:=1;
while i< n div 2 and a[i] = a[n-i+1] do i:=i+1;
if i< n div 2 then writeln(a, 'la xau doi xung') else writeln(a, 'khong la xau doi xung');
readln
end.
__________________
Hạnh phúc là được cho đi
quyenlh is offline   Trả lời kèm trích dẫn
Đã cảm ơn quyenlh:
Old 25-02-2008, 15:53   #10
Tuyết bờm
Lớp chồi
Points: 2,084, Level: 12 Points: 2,084, Level: 12 Points: 2,084, Level: 12
Activity: 0% Activity: 0% Activity: 0%
 
Tuyết bờm's Avatar
 
Gia nhập: 02-2008
Đơn vị: Trường THPT Lê Lai, Ngọc Lặc, Thanh Hóa
Bài viết: 12
Cảm ơn: 4
Được cảm ơn 9 lần trong 4 bài
Mặc định

Tui cũng làm theo cách này, thấy cũng hay! Nhưng chỉ là giúp HS dễ hiểu hơn, còn thuật toán SGK là để sử dụng các hàm về chuỗi nhiều hơn thì phải.
Tuyết bờm is offline   Trả lời kèm trích dẫn
Reply


Những người đang xem chủ đề này: 1 (0 thành viên và 1 khách)
 
Công cụ chủ đề
Kiểu hiển thị

Quyền đăng bài
Bạn không thể đăng chủ đề mới
Bạn không thể đăng bài trả lời
Bạn không thể đính kèm
Bạn không thể sửa bài viết của bạn

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Nhảy đến diễn đàn

Những chủ đề liên quan
Chủ đề Người khởi xướng Diễn đàn Trả lời Bài cuối
Những trò lố hay IM và kiểu đùa vô ý thức 3T Góc trò chuyện 2 06-12-2010 14:49
Nỗi ân hận điểm không. huongls Câu chuyện giáo dục 1 05-03-2008 15:29
Các sự cố khi vào điểm và xử lý lỗi cuongcp8103 Công Nghệ 11 16-01-2008 17:45
Một chỗ trống để điền yêu thương Phạm Minh Thiện Mỗi ngày 1 chuyện 0 15-01-2008 17:59
Bí mật của may mắn-Bí mật thứ 3: Dám thay đổi để tạo điều kiện tốt hơn NguyenDongPhu Sách hay 1 26-09-2007 23:42

Tất cả giờ đều quy về GMT +7. Bây giờ là 05:52.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Thuộc quyền sở hữu của DạyhọcIntel.net