Saturday, October 2, 2010

Алгоритм ба програмчлал


Програмчлалын хэлүүд
§Доод түвшний хэл (assembler)
§Дунд түвшний хэл (B, C, C++, Pascal, Basic гэх мэт)
§Дээд түвшний хэл (Visual C++, Delphi, Visual basic гэх мэт визуаль хэлүүд)
Лабораторийн ажлыг гүйцэтгэхэд Dev C++ едитор програмыг ашиглах болно. Өөр маш олон едитор програмууд байдаг.
Жишээ нь: Dev C++, Turbo C, C free гэх мэт

Програм гэж юу вэ?
Компьютероор тодорхой нэг ажил хийлгэхийн тулд түүнд өгч байгаа командуудын олонлогийг програм гэж нэрлэнэ.
Компилятор гэж юу вэ?
Компилятор нь бичсэн програмыг хөрвүүлэх үйл ажиллагааг хэлнэ. Хөрвүүлэх гэдэг нь хүнд ойлгомжтой буюу “СИ” хэл дээр бичигдсэн програмыг машинд ойлгомжтой буюу командуудын дараалалд хөрвүүлэх үйл ажиллагааг хэлнэ.
Програмыг ажиллуулах гэж юу вэ?
Компилятор хийсэн програмын код нь шууд биелэх *.exe файл буюу програм болох болно. Тухайн файлыг ажиллуулсанаар програмыг ажиллууна.

Програмчлалын Си хэлний түүх
Програмчлалын Си хэлийг 1972 онд Bell Laboratories (АНУ) компанийн ажилтан Деннис Ритчи (Dennis M. Ritchie) UNIX үйлдлийн системийг боловсруулж байх явцдаа зохиожээ. Си хэл нь системийн програмчлалын хэрэгсэл мэтээр бүтээгдсэн байна.

Си хэлний цагаан толгой
Латин цагаан толгойн том, жижиг үсгүүд: (A, B, ..., Z, a, b, ..., z)
Цифрүүд: 0, 1, 2, 3, 4 , 5, 6, 7, 8, 9
Цагаан толгойн тусламжтайгаар хэлний бусад бүрдэл хэсгүүдийг бүтээдэг. Си хэлэнд:
1.идентификаторууд (чөлөөт нэрс)
2.албаны (нөөц) үгс
3.тогтмолууд
4.тэмдэгт мөр төрлийн тогтмолууд
5.үйлдлийн тэмдгүүд
6.програмын тайлбар
7.тусгаарлагч тэмдгүүдийг ашиглан програмын эх кодыг бичнэ.
Идентификатор гэдэг нь.
Үсэг юм уу доогуур зураас “_”-аар эхлэсэн, үсэг, цифр, доогуур зураасуудын дарааллыг идентификатор гэнэ.

Ж.нь:
Зөв идентификатоорууд.
X,  y_too, x2,   a_mydata,  kom16,  hariu,  haagii,  aa,  b2c3,  week_days
Буруу идентификаторууд.
Count,       COUTN,    if,   1too,    hariu+too,     hicheel.1,     1-r too,      h y,

Том, жижиг үсгүүд ялгаатай утгыг илэрхийлнэ. Тиймээс ж.нь TIME болон time нь ялгаатай нэрнүүд байна.
Идентификатор нь дурын урттай байж болох ч C хэлнйи хөрвүүлэгч эхний 32 тэмдэгтийг л тооцдог.

Нөөц үг гэдэг нь
  Си хэлэнд урьдаас тодорхойлогдож нөөцлөгдсөн учраас програм зохиогч хүн инентификатор болгон ашиглах боломжгүй тийм идентификаторуудыг албаны үгс гэнэ. Албаны үгс нь өгөгдлийн төрөл, санах ойн ангиллууд, өгөгдлийн хэлбэрүүд, хуурмаг хувьсагчууд (регистрийн хувьсагчууд), операторууд г.м.-ийг тодорхойлно.
Өгөгдлийн төрөлүүд
Өгөгдлийн төрөл гэдэг нь үнэн хэрэгтээ түүний авах боломжтой утгын муж (олонлог) юм.
Мэдээж өгөгдлийг ашиглаж эхлэхээсээ өмнө програмд заавал зарлах ёстой.
өгөгдлийн_төрөл өгөгдлүүдийн_нэр,  өгөгдлүүдийн_нэр ;
Энд:
·         өгөгдлийн_төрөл - өгөгдлийн төрлийг заасан албаны үг
·         өгөгдлүүдийн_нэр – өгөгдлүүдийг нэрлэхийн тулд програм зохиогчийн сонгож авсан чөлөөт индентификаторуудыг таслалаар тусгаарлан цувуулж бичсэн жагсаалт.
Өгөгдлийг зарласан бичиглэлийн төгсгөлд цэгтэй таслал “;” тавьж буйг анхаараарай.
Си хэлэнд дараах үндсэн өгөгдлийн төрлүүд тодорхойлогдсон байдаг.

Хувьсагч
Зарлагдсан өгөгдлийн утга нь програм биелэх явцад өөрчлөгдөх боломжтой байвал тэр өгөгдлийг хувьсагч (variable) гэдэг.
  өгөгдлийн_төрөл хувьсагчуудын_нэр(с) ;
  хувьсагчуудын_нэр(с) - хувьсагчуудыг нэрлэхийн тулд програм зохиогчийн сонгож авсан чөлөөт индентификаторуудыг таслалаар тусгаарлан цувуулж бичсэн жагсаалт.
int x, y, z;                            /*x, y, z нь int төрлийн хувьсагчууд*/
float a, b, c;                        /* a, b, c нь float төрлийн хувьсагчууд*/
double e, f;                          /* e, f нь double төрлийн хувьсагчууд*/
unsigned char i, j;               /* i, j нь unsigned char төрлийн хувьсагчууд*/
Мөн хувьсагчийг зарлахдаа анхны утгатай зарлаж болдог.
  өгөгдлийн_төрөл хувьсагчийн_нэр = анхны_утга ;
float pi = 3.1415, cc = 1.23 ;
unsigned int year = 1997 ;
char useg = ‘A’ ;
Тогтмол
Програмын явцад утгыг нь өөрчлөж болдоггүй өгөгдлийг тогтмол гэнэ. Тогтмолыг хэд хэдэн янзаар зарлан (тодорхойлон) ашиглах боломжтой.
  const өгөгдлийн_төрөл ТОГТМОЛЫН_НЭР = тогтмолын утга ;
const – тогтмол өгөгдөл зарлахад хэрэглэх албаны үг
өгөгдлийн_төрөл – тогтмолын төрлийг заасан албаны үг
ТОГТМОЛЫН_НЭР – тогтмолыг нэрлэхийн тулд програм зохиогчийн сонгож авсан чөлөөт идентификатор
тогтмолын утга – тогтмолын төрөлд нийцэх ямар нэг утга.
const double E = 2.718282 ;
const long M = 99999999 ;
const int  F = 765 ;
#define директив ашиглан зарлах
  #define ТОГТМОЛЫН_НЭР  тогтмолын_утга
Ийм бичиглэлийг макротодорхойлолт (macrodefinition) гэнэ. Макротодорхойлолтын төгсгөлд цэгтэй таслал “;” байхгүй болохыг анхаараарай. Энд:
  #defineпрепроцессорын директив (удирдамж) хэмээн нэрлэгдэх команд.
Ж.нь:
#define EULER 2.718282
#define NEXT ‘Z’
г.м.
Макротодорхойлолтоор тогтмол зарлахдаа өгөгдлийн төрлийг яг зааж бичихгүй байна. Тогтмолын төрөл түүний авч байгаа утгаар тодорхойлогдох болно.
  #define NEXT ‘Z’
тодорхойлолт бол:
  const char NEXT = ‘Z’ ;
гэсэнтэй эквивалент юм.

Арифметик илэрхийлэл
Хэрэв илэрхийллийн утга бүхэл юм уу бодит тоо байвал ийм илэрхийллийг арифметик илэрхийлэл гэдэг.
Арифметик илэрхийлэлд дараах үйлдлүүд оролцсон байж болно:
v    +   - нэмэх (эсвэл унар нэмэх)
v    -    - хасах  (эсвэл унар хасах)
v    *    - үржүүлэх
v    /     - хуваах
v    %  - үлдэгдэл олох (ө.х. нэг бүхэл тоог нөгөөд хуваахад гарах үлдэгдлийг олох)

Утга оноох үйлдэл
Утга оноох = үйлдэл нь арифметик илэрхийлэлд оролцож болох бас нэг үйлдэл юм. Баруун талын үйлдэл нь утга (илэрхийлэл), зүүн талын илэрхийлэл нь энэ утгыг авах хэмжигдхүүн (хувьсагч) юм. Ж.нь z-ийг хувьсагчийн нэр гэвэл:
  z = 2.3 + 5.1
гэсэн бичиглэл нь 7.4 гэсэн утга бүхий илэрхийлэл болно. Түүнчлэн энэ утга z хувьсагчид утга болж оноогдоно. Гэхдээ зөвхөн энэ илэрхийллийн төгсгөлд цэгтэй таслал ; тавигдсан тохиолдолд уг илэрхийлэл утга оноох оператор болж хувирна. Ө.х.
  z = 2.3 + 5.1;
гэсэн илэрхийлэл бол z хувьсагчид 7.4 гэсэн утгыг оноох оператор юм.
Утга оноох операторын зүүн болон баруун талын операндуудын төрөл ялгаатай байж болно. Энэ тохиолдолд дээр дурдсан төрөл автоматаар хувиргах дүрэм үйлчлэхгүй.

Харьцааны үйлдлүүд
Харьцааны үйлдлүүд нь:
v    == - тэнцүү
v    !=  - тэнцүү биш
v    <   - бага
v    <= - бага буюу тэнцүү (ихгүй)
v    >   - их
v    >= - их буюу тэнцүү (багагүй)
Жишээ нь:
a – b > 6.3              /* a-b гэсэн арифметик илэрхийллийн утга 6.3-аас их эсэх*/
(x - 4) * 3 == 12     /* (x-4)*3 гэсэн арифметик илэрхийллийн утга 12-той тэнцэх эсэх*/
6 <= 44                   /* 6 нь 44-өөс ихгүй эсэх * /
Эдгээр үйлдлүүдийг ашигласан илэрхийллийг логик илэрхийлэл гэнэ.
Харьцуулах үйлдэл нь нөхцөл биелэж байвал 1, биелэхгүй бол 0 гэсэн утга буцаадаг.

Логик холбоос
Логик үйлдлүүд болох үгүйсгэл, ба, буюу нь Си хэлэнд дараах тэмдэгтүүдээр илэрхийлэгдэнэ.
!=  логик үгүйсгэл
&&  логик ба (and)  холбоос
||    логик буюу (or) холбоос
 
  Эдгээр үйлдлүүд нь логик нөхцлүүдийг холбон нийлмэл логик нөхцөл болгодог. Логик үйлдлүүд нь ихэнхдээ нөхцөл шалгах оператор болон нөхцөлт давталтын операторуудтай хэрэглэгдэнэ.

Жишээ нь: x нь 2, 3, 4 –ийн аль нэгтэй тэнцүү юу гэдгийг
(x==2)||(x==3)||(x==4) гэж шалгана.
          a нь 3 ба 5 –д зэрэг хуваагдахыг шалга гэдгийг
    (a%3==0) && (a%5==0) гэж шалгана.

No comments:

Post a Comment