Алгоритм нь нэгэн төрлийн бодлогуудыг бодох ерөнхий арга олж тогтоох оролдлоготой уялдан математикт анх үүссэн. Алгоритм гэдэг нэр томьёог арифметикийн 4-н үйлдлийг гүйцэтгэх дүрэм боловсруулсан Узбекийн математикч Мухаммед Иби Мусса Аль-Хорезмийн нэрнээс гаралтай гэж үздэг.
Энд яагаад алгоритмын талаар юм бичих гээд байна вэ гэхээр, аливаа програмд өөрийн гэсэн логик байдаг. Энэ логикийг олж гаргаж байгаа зүйлийг алгоритм гэдэг гэж би хувьдаа ойлгодог.
Ер нь алгоритм сайн бичиж чадаж байгаа хүн програм бичиж чаддаг. Ихэнх хүмүүс хэлэнд хамаг анхаарлаа хандуулдаг. Зүйрлэбэл энэ бол яг машин унахтай адил. Нэгэнт л машин бариад сурчихсан бол ямар машин барих нь 2 дахь асуудал. Өөртөө таарч тохирох тэр л машиныг олж унах хэрэгтэй.
Алгоритм бичихдээ англи хэл дээр бичвэл зүгээр байдаг. Зүгээр байдаг ч юу байхав, энэ бол дүрэм.
Тэгэхээр хамгийн эхний энгийн алгорrитм бичье. Өгөгдсөн 2 тоог уншаад хооронд нь нэмээд, хэвлэх.
1. Start
2. S<-0
3. Read 2 numbers A and B
4. S<-A+B
5. Print S
6. End
Аливаа алгоритм болон програм эхлэлтэй бас төгсгөлтэй байх ёстой. Учир нь компьютер сэтгэдэггүй тооцоолдог гэдгийг санах хэрэгтэй.
Програм бичихэд нэг чухал ойлголт байдаг нь утга оноох. Энд <- ийм тэмдгээр бичлээ. Өөрөөр хэлбэл S<-0 гэдэг нь S-д 0-ийг оноосон гэсэн үг. Түүнээс биш S=0 гэсэн үг биш. Тэнцүү гэдэг нь тусдаа ойлголт байдаг.
3-р алхам нь өгөгдсөн гэгдэх 2 тоог компьютерт оруулж уншуулж ойлгуулах гэсэн үг. 4-р алхам дээр байгаа S<-A+B гэдэг бол А,В гэсэн 2 тооны нийлбэрийг S-д оноож өгч байгаа гэсэн үг. Үүний дараа 5-р алхамд S-ийг хэвлэж байна. Өгөгдсөн 2 тооны нийлбэрийг S-д оноогоод өгцөн болохоор S-ийг хэвлэнэ гэдэг 2 тооны нийлбэрийг хэвлэнэ гэсэн үг.
Алгоритмын тухай дараа олон жишээтэйгээр бичлэг хийх болно.
Sunday, October 18, 2009
Wednesday, September 23, 2009
Бусад тооллын системүүдийн хувиргалт
8-тын тооллын системээс 10-тын тооллын систем, 10-таас 8-т руу яаж хөрвүүлэхийг ярилцъя.
Үндсэн зарчим нь яг л 2-тын тооллын систем 10-тын тооллын систем 2-ын бие бие рүүгээ хөрвөхтэй яг ижил. Гол нь 2-ын зэрэг дэвшүүлж байсныг нь 8-ын зэрэг дэвшүүлэх, 8-д хуваах гэсэн үйлдэл хийнэ. Яг ижил болохоор жишээ дурьдахаа больё. Харин яг зөв хувиргаж байна уу гэдгээ шалгах үүднээс доорхийг шилжүүлээд зөв гарч байна уу гэдгээ шалгаарай.
1001(10)=1751(8), 556.46(10)=1054(8), 202.53(8)=130.64(10)
Одоо харин 8-т ба 2-тын тооллын системийг авч үзье. Энэ аргыг мэдэх нь бас тийм ч чухал биш. Учир нь 2т->10т->8т, 8т->10т->2т гэсэн аргыг мэддэг болохоор. Гэхдээ мэдээж шууд хөрвүүлэх боломж байсаар байхад дамжиж хөрвүүлнэ гэдэг утгагүй.
8-тын тооллын системээс 2-тын тооллын систем рүү хөрвүүлэхдээ нөгөө л хуваадаг аргаа хэрэглэнэ. Өөр арга байхгүй уучлаарай:).
Харин 2-тын тооллоос 8-т руу шилжүүлэхэд их амархан ч гэмээр юм шиг.
8-тын тоолол 2-тын тоолол
0 = 000
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111
Ийм тоо байлаа гэж үзье. 1011011101(2) энэ нь 8-тын тооллын системийн 1335-тай тэнцүү. Яаж гаргаж байна вэ гэхээр 2-тын тооллын системийнхээ тооны цифрүүдийг 3,3-аар нь салгана.
1011011101 -> 1-011-011-101 -> 001-011-011-101
Одоо харин дээр бичсэн "хүснэгт"-ээс харах хэрэгтэй 101=5, 011=3, 011=3, 001=1. Ингэхээр 1335 болж байна.
Харин бутархай тооны хувьд, бутархай орон дээр нь яг ижилхэн үйлдэл хийнэ. Гэхдээ 3,3-аар нь салгахдаа баруун биш зүүн талаас нь. Өөрөө хэлбэл бутархай ч тэр бүхэл ч тэр аль альных нь хувьд цэгээс нь эхэлж 2 тийш нь 3,3-аар нь салгана гэсэн үг.
Одоо харин 16-тын тооллын систем рүү оръё.
10-тын тооллын системээс 16-т руу хөрвүүлэхдээ Тоогоо 16-д хувааж, яг л 2-т, 8-т дээр хийдэг шигээ үлдэгдлүүдийг нь араас нь бичнэ. Жишээ нь: 252(10)=CF(16)
Эсрэгээ мөн л адил харгалзах оронд нь 16-ийн зэрэг дэвшүүлээд нэмнэ. Бутархай хэсэг дээр нь мөн л адил 16-аар үржүүлнэ.
Харин одоо 16-т ба 2-т
16 2
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
A = 1010
B = 1011
C = 1100
D = 1101
E = 1110
F = 1111
Энэ "хүснэгт" байхад их амархан. Жишээ нь FACE(16)=1111101011001110(2)
16-тын тооллын системийн тооны харгалзах цифр болгонд 2-тын тооллын харгалзах утгуудыг орлуулж тавиад цувуулаад бичихэд л болно.
Ингээд энэ бүгдийг мэдэж байхад аль ч тооллын системээс аль руу нь хөрвүүлэх боломжтой боллоо гэсэн үг.
Үндсэн зарчим нь яг л 2-тын тооллын систем 10-тын тооллын систем 2-ын бие бие рүүгээ хөрвөхтэй яг ижил. Гол нь 2-ын зэрэг дэвшүүлж байсныг нь 8-ын зэрэг дэвшүүлэх, 8-д хуваах гэсэн үйлдэл хийнэ. Яг ижил болохоор жишээ дурьдахаа больё. Харин яг зөв хувиргаж байна уу гэдгээ шалгах үүднээс доорхийг шилжүүлээд зөв гарч байна уу гэдгээ шалгаарай.
1001(10)=1751(8), 556.46(10)=1054(8), 202.53(8)=130.64(10)
Одоо харин 8-т ба 2-тын тооллын системийг авч үзье. Энэ аргыг мэдэх нь бас тийм ч чухал биш. Учир нь 2т->10т->8т, 8т->10т->2т гэсэн аргыг мэддэг болохоор. Гэхдээ мэдээж шууд хөрвүүлэх боломж байсаар байхад дамжиж хөрвүүлнэ гэдэг утгагүй.
8-тын тооллын системээс 2-тын тооллын систем рүү хөрвүүлэхдээ нөгөө л хуваадаг аргаа хэрэглэнэ. Өөр арга байхгүй уучлаарай:).
Харин 2-тын тооллоос 8-т руу шилжүүлэхэд их амархан ч гэмээр юм шиг.
8-тын тоолол 2-тын тоолол
0 = 000
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111
Ийм тоо байлаа гэж үзье. 1011011101(2) энэ нь 8-тын тооллын системийн 1335-тай тэнцүү. Яаж гаргаж байна вэ гэхээр 2-тын тооллын системийнхээ тооны цифрүүдийг 3,3-аар нь салгана.
1011011101 -> 1-011-011-101 -> 001-011-011-101
Одоо харин дээр бичсэн "хүснэгт"-ээс харах хэрэгтэй 101=5, 011=3, 011=3, 001=1. Ингэхээр 1335 болж байна.
Харин бутархай тооны хувьд, бутархай орон дээр нь яг ижилхэн үйлдэл хийнэ. Гэхдээ 3,3-аар нь салгахдаа баруун биш зүүн талаас нь. Өөрөө хэлбэл бутархай ч тэр бүхэл ч тэр аль альных нь хувьд цэгээс нь эхэлж 2 тийш нь 3,3-аар нь салгана гэсэн үг.
Одоо харин 16-тын тооллын систем рүү оръё.
10-тын тооллын системээс 16-т руу хөрвүүлэхдээ Тоогоо 16-д хувааж, яг л 2-т, 8-т дээр хийдэг шигээ үлдэгдлүүдийг нь араас нь бичнэ. Жишээ нь: 252(10)=CF(16)
Эсрэгээ мөн л адил харгалзах оронд нь 16-ийн зэрэг дэвшүүлээд нэмнэ. Бутархай хэсэг дээр нь мөн л адил 16-аар үржүүлнэ.
Харин одоо 16-т ба 2-т
16 2
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
A = 1010
B = 1011
C = 1100
D = 1101
E = 1110
F = 1111
Энэ "хүснэгт" байхад их амархан. Жишээ нь FACE(16)=1111101011001110(2)
16-тын тооллын системийн тооны харгалзах цифр болгонд 2-тын тооллын харгалзах утгуудыг орлуулж тавиад цувуулаад бичихэд л болно.
Ингээд энэ бүгдийг мэдэж байхад аль ч тооллын системээс аль руу нь хөрвүүлэх боломжтой боллоо гэсэн үг.
Friday, September 11, 2009
Decimal to Binary & Binary to Decimal
10тын тооллын системээс 2тын тооллын систем рүү хөрвүүлэх арга нь хуваах. Жишээн дээр тайлбарлая.
27 гэсэн 10тын тооллын системийн тоог 2тын тооллын систем рүү хөрвүүлье.
27/2=13 ба 1 үлдэгдэл. 13/2=6 үлдэгдэл 1. 6/2=3 үлдэгдэл 0. 3/2=1 үлдэгдэл 1. 1/2=0 үлдэгдэл 1.
Харин одоо үлдэгдэл тоонуудыг араас нь эхлээд бичвэл 11011 болно. Өөрөө хэлбэл 10тын тооллын 27 гэдэг тоо нь 2тын тооллын системд 11011 гэсэн үг. Өөр нэг жишээ авъя. 105 гэж тоог хөрвүүлье.
Хувааж байгаа тоо-ноогдвор-үлдэгдэл
105 - 52 - 1
52 - 26 - 0
26 - 13 - 0
13 - 6 - 1
6 - 3 - 0
3 - 1 - 1
1 - 0 - 1
Сүүлээс нь эхлээд урагш нь бичвэл 1001011 болж байна.
Одоо харин бутархай тооны хувьд. Үнэнийг хэлэхэд хэтэрхий том тоог хуваагаад бичээд суух нь залхуутай байгаа болохоор бага тоон дээр хийе. 3.26 гэж тоог 2тын тооллын систем рүү хөрвүүлье.
Бүхэл хэсэг буюу 3 нь 11 тэй тэнцүү. Харин бутархай хэсгийг нь ингэж хөрвүүлнэ.
0.26х2=0.52 эндээс бүхэл хэсэг 0ийг авна.
0.52x2=1.04 эндээс бүхэл хэсэг 1ийг нь авна. Тэгээд 11ийнхээ ард бичихэд 11.01 болно. Үүнийг цааш нь үргэлжлүүлж болох боловч бутархай хэсэгт 2оос илүү орны хэрэггүй.
Харин одоо 2тын тооллын системээс 10тын тооллын систем рүү хөрвүүлэх аргыг авч үзье. Товчхон хэлбэл орных нь тоогоор 2ын 0 зэргээс эхлээд хооронд нь нэмнэ. 0 таарч байгаа хэсгийг нь 0-ээр тооцох буюу нийлбэрт оруулахгүй. Жишээ нь:
1011 гэсэн 2тын тооллын системийн тоог 10тын тооллын систем рүү хөрвүүлье.
1 0 1 1
8 4 2 1 => 8+2+1=11. Нийлбэрт 4-ийг оруулалгүй нэмж байгаа шалтгаан нь 2ын 2 зэрэг буюу 4т харгалзах утга нь 0.
Үүнээс арай том тоо буюу 10111111 гэсэн жишээ авч үзье. Энэ тохиолдолд болохоор илүү амар арга нь эхлээд 2-ын 8 зэргийг олно. Энэ нь 256. Үүнээс 6 зэрэг болох 64-ыг бас 1-ийг хасна. Тэгэхээр 191 болно. Өөрөөр хэлбэл 2тын тооллын системийн хэдэн оронтой тоо байна түүнийх нь зэргийг олоод 0-тэй тэнцэж байгаа харгалзах утгуудынх нь нийлбэр дээр 1-ийг нэмээд хасахад гарна гэсэн үг.
Харин одоо 2тын тооллын системийн бутархай тоог 10тын тооллын систем рүү шилжүүлье. Жишээ: 1111.101
1011 ийг өмнөх аргаараа шилжүүлбэл 11. Бутархай хэсгийг нь мөн адил 2тын зэрэгт дэвшүүлнэ. Гэхдээ ялгаа нь бүхэл хэсэг дээр хойноос нь эхэлж байсан бол бутархаа дээр цэгийн ардаас эхлэх ба хасах зэрэг дэвшүүлнэ. Хасах зэрэг дэвшүүлэхдээ -1 ээс эхэлнэ. Өөрөөр хэлбэл 0.101 => 1/2 + 1/8 = 5/8 = 0.622 болно. 1111.101(2)=11.622(10)
Ингээд дуусгая. Өөрөө янз бүрийн тоо хувиргаж үзээрэй.
Decimal Binary
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
27 гэсэн 10тын тооллын системийн тоог 2тын тооллын систем рүү хөрвүүлье.
27/2=13 ба 1 үлдэгдэл. 13/2=6 үлдэгдэл 1. 6/2=3 үлдэгдэл 0. 3/2=1 үлдэгдэл 1. 1/2=0 үлдэгдэл 1.
Харин одоо үлдэгдэл тоонуудыг араас нь эхлээд бичвэл 11011 болно. Өөрөө хэлбэл 10тын тооллын 27 гэдэг тоо нь 2тын тооллын системд 11011 гэсэн үг. Өөр нэг жишээ авъя. 105 гэж тоог хөрвүүлье.
Хувааж байгаа тоо-ноогдвор-үлдэгдэл
105 - 52 - 1
52 - 26 - 0
26 - 13 - 0
13 - 6 - 1
6 - 3 - 0
3 - 1 - 1
1 - 0 - 1
Сүүлээс нь эхлээд урагш нь бичвэл 1001011 болж байна.
Одоо харин бутархай тооны хувьд. Үнэнийг хэлэхэд хэтэрхий том тоог хуваагаад бичээд суух нь залхуутай байгаа болохоор бага тоон дээр хийе. 3.26 гэж тоог 2тын тооллын систем рүү хөрвүүлье.
Бүхэл хэсэг буюу 3 нь 11 тэй тэнцүү. Харин бутархай хэсгийг нь ингэж хөрвүүлнэ.
0.26х2=0.52 эндээс бүхэл хэсэг 0ийг авна.
0.52x2=1.04 эндээс бүхэл хэсэг 1ийг нь авна. Тэгээд 11ийнхээ ард бичихэд 11.01 болно. Үүнийг цааш нь үргэлжлүүлж болох боловч бутархай хэсэгт 2оос илүү орны хэрэггүй.
Харин одоо 2тын тооллын системээс 10тын тооллын систем рүү хөрвүүлэх аргыг авч үзье. Товчхон хэлбэл орных нь тоогоор 2ын 0 зэргээс эхлээд хооронд нь нэмнэ. 0 таарч байгаа хэсгийг нь 0-ээр тооцох буюу нийлбэрт оруулахгүй. Жишээ нь:
1011 гэсэн 2тын тооллын системийн тоог 10тын тооллын систем рүү хөрвүүлье.
1 0 1 1
8 4 2 1 => 8+2+1=11. Нийлбэрт 4-ийг оруулалгүй нэмж байгаа шалтгаан нь 2ын 2 зэрэг буюу 4т харгалзах утга нь 0.
Үүнээс арай том тоо буюу 10111111 гэсэн жишээ авч үзье. Энэ тохиолдолд болохоор илүү амар арга нь эхлээд 2-ын 8 зэргийг олно. Энэ нь 256. Үүнээс 6 зэрэг болох 64-ыг бас 1-ийг хасна. Тэгэхээр 191 болно. Өөрөөр хэлбэл 2тын тооллын системийн хэдэн оронтой тоо байна түүнийх нь зэргийг олоод 0-тэй тэнцэж байгаа харгалзах утгуудынх нь нийлбэр дээр 1-ийг нэмээд хасахад гарна гэсэн үг.
Харин одоо 2тын тооллын системийн бутархай тоог 10тын тооллын систем рүү шилжүүлье. Жишээ: 1111.101
1011 ийг өмнөх аргаараа шилжүүлбэл 11. Бутархай хэсгийг нь мөн адил 2тын зэрэгт дэвшүүлнэ. Гэхдээ ялгаа нь бүхэл хэсэг дээр хойноос нь эхэлж байсан бол бутархаа дээр цэгийн ардаас эхлэх ба хасах зэрэг дэвшүүлнэ. Хасах зэрэг дэвшүүлэхдээ -1 ээс эхэлнэ. Өөрөөр хэлбэл 0.101 => 1/2 + 1/8 = 5/8 = 0.622 болно. 1111.101(2)=11.622(10)
Ингээд дуусгая. Өөрөө янз бүрийн тоо хувиргаж үзээрэй.
Decimal Binary
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
Тооллын системүүд ба түүний хувиргалтууд
Мэдээллийн технологийн мэргэжилтнүүдийн мэдэж байх ёстой хамгийн чухал, үндсэн суурь зүйл бол тооллын системүүд ба түүний хувиргалтууд байдаг. Тийм учраас би энэ блогтоо 1+1=10 гэж нэр өгсөн. Тэгэхээр:
1. Binary Number System 2тын тооллын систем
2. Decimal Number System 10тын тооллын систем
3. Octal Number System 8тын тооллын систем
4. Hexa-Decimal Number System 16тын тооллын систем
гэсэн үндсэн тооллын системүүд байдаг.
Компьютер 2тын тооллын системээр бүх үйлдлээ хийдэг. Харин хүмүүс өдөр тутмын амьдралдаа 10тын тооллын системийг ашигладаг.
2тын тооллын системд зөвхөн 0 ба 1 ашигладаг. Харин 10тын тооллын системд 0,1,2,3,4,5,6,7,8,9 гэсэн цифрүүдийг ашигладаг бол 8тын тооллын системд 0-7, 16тын тооллын системд 0-9, A,B,C,D,E,F.
1. Binary Number System 2тын тооллын систем
2. Decimal Number System 10тын тооллын систем
3. Octal Number System 8тын тооллын систем
4. Hexa-Decimal Number System 16тын тооллын систем
гэсэн үндсэн тооллын системүүд байдаг.
Компьютер 2тын тооллын системээр бүх үйлдлээ хийдэг. Харин хүмүүс өдөр тутмын амьдралдаа 10тын тооллын системийг ашигладаг.
2тын тооллын системд зөвхөн 0 ба 1 ашигладаг. Харин 10тын тооллын системд 0,1,2,3,4,5,6,7,8,9 гэсэн цифрүүдийг ашигладаг бол 8тын тооллын системд 0-7, 16тын тооллын системд 0-9, A,B,C,D,E,F.
Wednesday, September 2, 2009
1+1=10
There are 10 types of people in the world: Those who understand binary, and those who don't...
Ийм блог эхлүүлж бичье гэж бодсоор байтал их хугацаа өнгөрчээ. Хаанаас нь яаж эхлэхээ мэдэхгүй суулаа. Юутай ч ингээд эхлүүлчихье.
Энэ блогтоо мэдээллийн технологийн үүсэл хөгжил, өнөөгийн түвшний талаар бичихээс гадна, сонирхон судалж байгаа болон энэ төрлийн мэргэжлийн хүмүүстэй санал бодлоо солилцох болно.
За тэгээд бүгдээрээ FEEL FREE хамтдаа хөгжицгөөе.
Ийм блог эхлүүлж бичье гэж бодсоор байтал их хугацаа өнгөрчээ. Хаанаас нь яаж эхлэхээ мэдэхгүй суулаа. Юутай ч ингээд эхлүүлчихье.
Энэ блогтоо мэдээллийн технологийн үүсэл хөгжил, өнөөгийн түвшний талаар бичихээс гадна, сонирхон судалж байгаа болон энэ төрлийн мэргэжлийн хүмүүстэй санал бодлоо солилцох болно.
За тэгээд бүгдээрээ FEEL FREE хамтдаа хөгжицгөөе.
Subscribe to:
Posts (Atom)