2011/10/25

Си дээр ингэж болдог байсан юм байна ш дээ

Си дээр нэг сонин юм харлаа. Тухайлбал функц дээр. Ингэж болдог гэхээр гайхмаар ч юм шиг. Функцыг тодорхойлж бичихэд ингэж бичдэгийг анх удаа л харж байна. Хамгийн Си-гийн функцыг ингэж бичнэ гэж заалгуулж байлаа.

datatype function-name (datatype argument-list)
{
      local variable declarations;
      executable statements;
      ......................................
      return (expression);
}

За нэг ийм л юм үздэг билээ. Жишээ нь хоёр тооны ихийг олдог функц гэвэл:

int max (int a, int b)
{
      return (a > b) ? a : b;
}

Тэгсэн бас ингэж бичиж болдог юм байна шүү!

datatype function-name (argument-list)
argument declaration;
{
      local variable declarations;
      executable statements;
      ......................................
      return (expression);

}

Энэ форматаар бол дээрх мах функцыг бол ингэж бичиж болох нь:

int max (a, b)
     int a, b;
{
      return (a > b) ? a : b;
}

Гэхдээ анх сурсан минь арай эвтэйхэн юмаа. Хэ хэ.

2011/10/23

Хөвөх эрэмбэлэлт (Bubble Sort) Х Лисп хэл Х Си хэл

За Лисп хэлийг оролдож үзэж байна. Тэгээд энэ хөвөх эрэмбэлэлтийг Лисп дээр хийж үзэхээр шийдлээ. Хөвөх эрэмбэлэлт бол хамгийн энгийн эрэмбэлэлт. Үндсэн санаа нь бол хөөс хөвөх зарчимтай адил. Усан дотор хөнгөхөнүүд нь дээш хөөрч, хүнд нь доошилдогтой адил жагсаалтын бага элементүүд аажмаар дээшилдэг. Үндсэн хийж байгаа үйлдэл нь зэрэгцээ элементүүдийг шалгаад байрыг нь солих замаар явна.

Хөвөх эрэмбэлэлт нь туулай яст мэлхийн төрлийн эрэмбэлэлт. Энэ төрлийн эрэмбэлэлт нь нэг төрлийн элементүүд нь хурдан байрандаа орж үлдсэн нь удаан байрандаа ордог. Хөвөх эрэмбэлэлт дээр бол багаас их рүү эрэмбэлж байгаа тохиолдолд их элементүүд нь хурдан байрандаа орж бага элементүүд нь удаан байрандаа ордог. Өөрөөр хэлбэл их элементүүдийг зөв байранд нь оруулахад чиглэгдсэн гэсэн үг. Доор хөдөлгөөнт жишээ үзүүлсэн байна.

Псевдо код нь:

procedure bubbleSort( A : list of sortable items )
  repeat
    swapped = false
    for i = 1 to length(A) - 1 inclusive do:
      if A[i-1] > A[i] then
        swap( A[i-1], A[i] )
        swapped = true
      end if
    end for
  until not swapped
end procedure
 
Нэг иймэрхүү байх нь. За тэгвэл Си хэл дээрх ингэж бичлээ. 

 
Гаралт нь:
 За тэгвэл одоо Лисп хэл дээр бичиж үзье. 
 
 
Гаралт нь:
 
Лисп хэлний бичиглэлийг харж байгаа байх. Си-гээс хоёр дахин бага бичлэгтэй байгаа 
биз. Дараа нь Сонголтын Эрэмбэлэлтийн тухай оруулнаа. 
 

Gedit дээр Lisp хэлний онцгойлолт нэмэх

За Lisp хэлний онцгойлолт (highlight) ийг http://www.mediafire.com/?3g8c4r53csj0ltx хаягаас татаж авна. Тэгээд татаж авсан шахсан файлаа задлаад install.sh гэсэн шэлл файлыг терминалаар ажиллуулна. Тэгээд gedit-ээ дахин ачааллуулахад autolisp гэсэн онцгойлолт нэмэгдсэн байна.

Gedit-ээ жаахан тоноглочихъё

Убунту хэрэглэгчид gedit програмыг андахгүй биз дээ. Тэгвэл Gedit дээрээ жаахан юм нэмье.

  1. Ubuntu Software Center-ээс gedit-plugins гэдгийг суулгана.
  2. Дараа нь Gedit-ийнхээ Edit цэсний Preferences-рүү орж Plugins цэс дээр дарж Embedded Terminal гэснийг нь идэвхжүүлнэ.
  3. Хаалтуудыг автоматаар хаадаг байхыг хүсвэл Bracket Completion-ийг идэвхжүүлнэ.
  4. Тэгээд View цэсний Bottom Panel-ийг дарахаар Gedit дээр терминал маань гараад ирнэ.
  5. Edit->Preferences->Color гэсэн цэснээс Gedit-ээ гоё өнгөтэй болгож болно.

2011/10/19

Ам цагаан хулганатай учирсан нь


Өнөө шөнө нэгэн зүүд зүүдэллээ. Илэрхийлж үл чадах нэгэн газар байна гэнэ. Тэнгэр гэж үгүй, газар ч гэж үгүй. Агаарт нисэж байгаа ч юм шиг эсвэл усанд сэлж байгаа юм шиг. Амьсгалаад ч байгаа юм шиг, бас үгүй ч юм шиг. Хараад ч байгаа юм шиг төсөөлөөд ч байгаа юм шиг. Дуу авиа сонсогдоод ч байгаа юм шиг эсвэл би сонсож байна гэж бодоод ч байгаа юм шиг тийм л ертөнцөд байж байна гэнэ.

Тэгсэн цаанаас нэгэн цагаан юм над уруу ирж байна. Хоёр гартаа модон хувин барьсан байх юм. За тэгсэн чинь тэр нь хулгана байжээ. Өнөөх хувин дотор нь дүүрэн ус байна. Аа нөгөө зүүдэнд ус өгдөг ам цагаан хулгана нь энэ байх нь. Тэгээд хулгана надад үг хэлж байна:

- Гүн нойрны ертөнцийн ам цагаан хулгана бий байна. Чамд би ус авчирлаа гэнэ. Тэгсэн би:
- Өө, би унтахаасаа өмнө зөндөө ус уучихсан. Ам цангаагүй л байна даа гэв. Тэгсэн хулгана:
- Энэ хоёр хувин ус чинийх чи уухгүй бол би энд асгалаа гээд шууд асгачих юм. Чамаас өөр ус өгөх хүмүүс зөндөө бий гэв.
- Тэгээд яагаад асгаж байгаа юм бэ? гэж би асуув.
- Чамд л зориулсан ус болохоос өөр хүнийх бишээ гээд яваад өгөв.

Тэгээд л гэнэт л холын газар ойр болж ойрын газар цаашлаад зөв буруу нь мэдэгдэхгүй, баруун зүүн нь танигдахгүй, дээд доод нь солигдоод тэр чигээрээ эрээлжлэн мяраалжлан би сэрлээ. Тэгээд дөнгөж босоод галт тогоо уруу орсон чинь дүүрэн ус нэлийж байна гэнэ. Тэгээд л бушуухан хувин алчуур авч шалан дээр тогтсон нуурыг шавхаж эхэллээ. Тэгсэн яг хоёр хувин ус гарав.