c-д ямар програм шугаман байна. Шугаман програмчлалын талаар товчхон

Гэр / Чиглүүлэгчид

Хэрэв програмын бүх хэллэгүүд дараалан биелэгдэж байвал ийм программ дуудагдана шугаман.Өгөгдсөн томъёогоор үр дүнг тооцдог программыг жишээ болгон авч үзье.

Даалгавар 1.1. Томъёогоор тооцоолох

Фаренгейтийн хэмийг Цельсийн градус болгон хувиргах программыг дараах томъёогоор бич.

Энд C нь Цельсийн температур, F нь Фаренгейт дэх температур юм.

Аливаа программ бичихээсээ өмнө түүнд юу оруулах, үр дүнд нь юу авах ёстойг тодорхой тодорхойлох ёстой.

IN энэ тохиолдолд:

Эхний өгөгдөл нь нэг юм бодит тоо, энэ нь Цельсийн температур,

Үр дүн нь өөр бодит тоо юм.

Програмаа бичихийн өмнө Visual C++ нэгдсэн орчинг нээцгээе:

Эхлэх/Хөтөлбөр/Microsoft Visual Studio/Microsoft Visual C++ 6.00

1) Файл > Шинэ...

2) Нээх цонхонд:

Win32 консол програмын төрлийг сонгоно уу;

Төслийн нэр текстийн талбарт төслийн нэрийг оруулна уу;

Байршлын текст талбарт төслийн файлууд байрлах лавлахын нэрийг оруулна уу (... товчийг ашиглан сонгоно уу), жишээ нь G:/ASOIZ/

OK товчийг зүүн товшино уу.

3) Win32 Console Application - Stepl of 1 харилцах цонх нээгдэх ба дотор нь:

Хоосон төслийн төрлийг сонгох;

Finish товчийг дарна уу.

4) Дарсны дараа Шинэ төсөл цонх гарч ирэх ба OK товчийг дарна.

1) Файл > Шинэ.... Энэ нь New харилцах цонхыг нээнэ.

2) Файлууд таб дээр:

Файлын төрлийг сонгоно уу (энэ тохиолдолд: C++ Эх файл);

Файлын нэр текст талбарт хүссэн файлын нэрийг оруулна уу;

Төсөлд нэмэх нүдийг идэвхжүүлсэн байх ёстой;

OK дарна уу.

Бид дараах програмын текстийг бичнэ.

Хөтөлбөрийн мөр бүрийг тусад нь авч үзье.

Програмын эхэнд урьдчилан процессорын удирдамж бичигдсэн бөгөөд үүний дагуу толгой файл нь програмын эх тексттэй холбогддог. . Энэ нь cin болон cout оролт гаралтын операторуудын тайлбарыг агуулсан файл юм.

Аливаа C++ программ нь функцүүдээс бүрдэх ба тэдгээрийн аль нэг нь үндсэн нэртэй байх ёстой бөгөөд энэ нь программыг гүйцэтгэх ажиллагаа эхэлдэг гэдгийг илтгэнэ. Хаалтны дараа функцийн биеийг буржгар хаалтанд ( ), i.e. гүйцэтгэх шаардлагатай эдгээр мэдэгдлүүд.

Програм бичихдээ ямар ч загвар нь дараах хэлбэртэй байна.

#оруулна<…>

#оруулна<…>

хувьсагчдыг зарлах;

анхны өгөгдлийг оруулах;

үр дүнг тооцоолох;

үр дүнг гаргах;

Эх өгөгдөл болон үр дүнг хадгалахын тулд та хангалттай зайг хуваарилах хэрэгтэй RAM. Үүнийг 2-р мэдэгдлийг ашиглан хийдэг. Манай программ нь Цельсийн температур ба Фаренгейт дэх температур гэсэн хоёр утгыг хадгалах шаардлагатай тул мэдэгдэл нь хоёр хувьсагчийг тодорхойлдог. Нэгийг нь Фаренгейт дэх температурыг хадгалахад зориулж фар, нөгөөг нь (Цельсийн) цель гэж нэрлэдэг. Програмист нь хувьсагчдад зорилгоос хамааран нэр өгдөг. Нэр нь зөвхөн латин үсэг, тоо, доогуур зураасаас бүрдэх бөгөөд тоогоор эхэлж болохгүй.

Аливаа хувьсагчийг тайлбарлахдаа үүнийг заавал зааж өгөх ёстой төрөл.Температур нь зөвхөн бүхэл тоон утгыг авч чаддаггүй тул хувьсагчдын хувьд бодит төрлийг сонгосон хөвөх

Үндсэн төрлүүд:

int (богино, тэмдэггүй) - бүхэл тоо,

хөвөх (давхар, урт давхар) - бодит

тэмдэгт - тэмдэгт

bool - логик

Хөтөлбөрийн хэрэглэгч гараас ямар үед өгөгдөл оруулах шаардлагатайг мэдэхийн тулд оролтын хүлээх мөрийг ашигладаг (оператор 3). Операторт заасан нь дэлгэц дээр гарч ирнэ. coutтэмдэгтүүдийн мөр ба курсор дараагийн мөрөнд шилжинэ. Дараагийн мөрөнд шилжихийн тулд ашиглана уу endl.

4-р мэдэгдэлд нэг тоог гараас хувьсагч руу оруулна фар. Энэ зорилгоор стандарт объектыг ашигладаг cinболон олборлох (унших) үйл ажиллагаа >>. Хэрэв та хэд хэдэн утгыг оруулах шаардлагатай бол >> үйлдлийн хэлхээг ашиглана уу.

Оператор 5 нь баруун талд бичигдсэн илэрхийллийг үнэлдэг томилох үйлдлүүд(= тэмдгээр тэмдэглэсэн) бөгөөд үр дүн нь cels хувьсагчдад оноогдсон, өөрөөр хэлбэл энэ хувьсагчдад хуваарилагдсан санах ойд хадгалагдана. Эхлээд бүхэлд нь тогтмол 5-д хуваагдана үнсэлт тогтмол 9, дараа нь энэ үйлдлийн үр дүнг fahr хувьсагчаас 32 тоог хассан үр дүнд үржүүлнэ.

Үр дүнг оператор 6-д харуулахын тулд объектыг ашиглана cout.Таван элементээс бүрдсэн гинж гарч ирнэ. Энэ бол шугам юм "Фаренгейт:", хувьсах утга фар, шугам ", Цельсийн градусаар:", хувьсах утга целлболон шинэ шугамын оператор endl.

Энэ хөтөлбөрийн сүүлчийн мэдэгдэл (мэдэгдэл 7) нь үүнээс буцаж, үнэ цэнийг гадаад орчинд шилжүүлэх зорилготой юм.

Дараа нь бид програмыг эмхэтгэдэг. Үүнийг хийхийн тулд хэрэгслийн самбар дээрх товчлуур эсвэл Ctrl+F7 товчлуурын хослолыг дарна уу. Гаралтын цонх (дэлгэцийн доод талд) 0 алдаа, 0 анхааруулга (0 алдаа, 0 анхааруулга) гэсэн мессежийг харуулах ёстой. Хэрэв алдаа байгаа бол эх хувилбарыг нь шалгана уу.

Програмыг эхлүүлэхийн тулд хэрэгслийн самбар дээрх товчлуур эсвэл Ctrl+F5 товчлуурын хослолыг дарна уу.

Хөтөлбөрийг эхлүүлэхэд орос тэмдэгтүүдийн оронд кирилл үсгийг кодлох өөр өөр стандартаас үүдэлтэй ???-г харж байна. үйлдлийн системүүд MS DOS болон Windows. Үүнийг засахын тулд CharToOem функцийг програмд ​​нэмнэ үү (тодорхой болгохын тулд нэмэлтүүдийг улаанаар тодруулсан)

#оруулна

#оруулна

char* RUS(const char* текст)

CharToOem(текст, буф);

float fahr, cels;

cout<

cels = 5/9 * (фар - 32);

cout<

cout<

Чиг үүрэг Орос()үйл ажиллагааны гинжин хэлхээнд нэгээс олон удаа ашиглах боломжгүй<< для одного объекта cout, тиймээс бид үүнийг хоёр хуваасан.

Таны харж байгаагаар програмыг тогтвортой ажиллуулсны үр дүн тэг байна! Энэ нь илэрхийлэлийг хэрхэн үнэлдэгтэй холбоотой юм. 4-р операторыг дахин харцгаая. 5 ба 9 тогтмолууд нь бүхэл тоон төрлийнх тул тэдгээрийн хуваагдлын үр дүн мөн бүхэл тоо болно. Мэдээжийн хэрэг, цаашдын тооцооллын үр дүн нь тэгээс өөр зүйл байж болохгүй. Энэ алдааг засах нь маш энгийн - тогтмолуудын ядаж нэгийг нь бодит тоогоор бичихэд хангалттай, жишээлбэл:

cels = 5. / 9 * (fahr - 32);

Лабораторийн ажил No1

Сэдэв: “Шугаман алгоритмыг програмчлах. Дибаглагчтай ажиллах"

Ажлын зорилго

1.1 Си хэлний хамгийн энгийн программын бүтцийг эзэмшсэн байх.

1.2 Си хэлний оролт/гаралтыг зохион байгуулах ур чадвар эзэмшинэ.

Техникийн дэмжлэг

2.1 Хувийн компьютер

2.2 Гар.

2.3 Дэлгэц

2.4 Хэвлэх төхөөрөмж.

Програм хангамж

3.1 Windows үйлдлийн систем

3.2 Програмчлалын систем Visual C++ хувилбар 6.0 эсвэл Borland C++ 3.1 болон түүнээс хойшхи хувилбарууд.

Асуудлын талаархи мэдэгдэл

Өгөгдөл боловсруулах энгийн программ бичих.

5.1 Ажлын сэдэв, зорилго.

5.2 Асуудлын талаархи мэдэгдэл.

5.3 Програмын текст.

5.4 Програмын гүйцэтгэлийн үр дүн.

5.5 Програмын алгоритмын диаграммууд.

Ерөнхий мэдээлэл

Шугаман програм

Хэрэв програмын бүх хэллэгүүд дараалан биелэгдэж байвал ийм программ дуудагдана шугаман.Өгөгдсөн томъёогоор үр дүнг тооцдог программыг жишээ болгон авч үзье.

Даалгавар 1.1. Томъёогоор тооцоолох

Фаренгейтийн хэмийг Цельсийн градус болгон хувиргах программыг дараах томъёогоор бич.

Энд C нь Цельсийн температур, F нь Фаренгейт дэх температур юм.

Аливаа программ бичихээсээ өмнө түүнд юу оруулах, үр дүнд нь юу авах ёстойг тодорхой тодорхойлох ёстой.

Энэ тохиолдолд:

Эхний өгөгдөл нь Цельсийн температурыг илэрхийлдэг нэг бодит тоо юм.

Үр дүн нь өөр бодит тоо юм.

Програмаа бичихийн өмнө Visual C++ нэгдсэн орчинг нээцгээе:

Эхлэх/Хөтөлбөр/Microsoft Visual Studio/Microsoft Visual C++ 6.00

1) Файл > Шинэ...

2) Нээх цонхонд:

Win32 консол програмын төрлийг сонгоно уу;

Төслийн нэр текстийн талбарт төслийн нэрийг оруулна уу;

Байршлын текст талбарт төслийн файлууд байрлах лавлахын нэрийг оруулна уу (... товчийг ашиглан сонгоно уу), жишээ нь G:/ASOIZ/

OK товчийг зүүн товшино уу.

3) Win32 Console Application - Stepl of 1 харилцах цонх нээгдэх ба дотор нь:

Хоосон төслийн төрлийг сонгох;

Finish товчийг дарна уу.

4) Дарсны дараа Шинэ төсөл цонх гарч ирэх ба OK товчийг дарна.

1) Файл > Шинэ.... Энэ нь New харилцах цонхыг нээнэ.

2) Файлууд таб дээр:

Файлын төрлийг сонгоно уу (энэ тохиолдолд: C++ Эх файл);

Файлын нэр текст талбарт хүссэн файлын нэрийг оруулна уу;

Төсөлд нэмэх нүдийг идэвхжүүлсэн байх ёстой;

OK дарна уу.

Бид дараах програмын текстийг бичнэ.

Хөтөлбөрийн мөр бүрийг тусад нь авч үзье.

Програмын эхэнд урьдчилан процессорын удирдамж бичигдсэн бөгөөд үүний дагуу толгой файл нь програмын эх тексттэй холбогддог. . Энэ нь cin болон cout оролт гаралтын операторуудын тайлбарыг агуулсан файл юм.

Аливаа C++ программ нь функцүүдээс бүрдэх ба тэдгээрийн аль нэг нь үндсэн нэртэй байх ёстой бөгөөд энэ нь программыг гүйцэтгэх ажиллагаа эхэлдэг гэдгийг илтгэнэ. Хаалтны дараа функцийн биеийг буржгар хаалтанд ( ), i.e. гүйцэтгэх шаардлагатай эдгээр мэдэгдлүүд.

Програм бичихдээ ямар ч загвар нь дараах хэлбэртэй байна.

#оруулна<…>

#оруулна<…>

хувьсагчдыг зарлах;

анхны өгөгдлийг оруулах;

үр дүнг тооцоолох;

үр дүнг гаргах;

Эх өгөгдөл, үр дүнг хадгалахын тулд та RAM-д хангалттай зай хуваарилах хэрэгтэй. Үүнийг 2-р мэдэгдлийг ашиглан хийдэг. Манай программ нь Цельсийн температур ба Фаренгейт дэх температур гэсэн хоёр утгыг хадгалах шаардлагатай тул мэдэгдэл нь хоёр хувьсагчийг тодорхойлдог. Нэгийг нь Фаренгейт дэх температурыг хадгалахад зориулж фар, нөгөөг нь (Цельсийн хэмээр) цель гэж нэрлэдэг. Програмист нь хувьсагчдын зорилгод үндэслэн нэр өгдөг. Нэр нь зөвхөн латин үсэг, тоо, доогуур зураасаас бүрдэх бөгөөд тоогоор эхэлж болохгүй.

Аливаа хувьсагчийг тайлбарлахдаа үүнийг заавал зааж өгөх ёстой төрөл.Температур нь зөвхөн бүхэл тоон утгыг авч чаддаггүй тул хувьсагчдын хувьд бодит төрлийг сонгосон хөвөх

Үндсэн төрлүүд:

int (богино, тэмдэггүй) - бүхэл тоо,

хөвөх (давхар, урт давхар) - бодит

тэмдэгт - тэмдэгт

bool - логик

Хөтөлбөрийн хэрэглэгч гараас ямар үед өгөгдөл оруулах шаардлагатайг мэдэхийн тулд оролтын хүлээх мөрийг ашигладаг (оператор 3). Операторт заасан нь дэлгэц дээр гарч ирнэ. coutтэмдэгтүүдийн мөр ба курсор дараагийн мөрөнд шилжинэ. Дараагийн мөрөнд шилжихийн тулд ашиглана уу endl.

4-р мэдэгдэл гарнаас оруулах ажиллагааг гүйцэтгэдэг

Энэ зорилгоор стандарт объектыг ашигладаг cinболон олборлох (унших) үйл ажиллагаа >>. Хэрэв та хэд хэдэн утгыг оруулах шаардлагатай бол >> үйлдлийн хэлхээг ашиглана уу.

Оператор 5 нь баруун талд бичигдсэн илэрхийллийг үнэлдэг томилох үйлдлүүд(= тэмдгээр тэмдэглэсэн) бөгөөд үр дүн нь cels хувьсагчдад оноогдсон, өөрөөр хэлбэл энэ хувьсагчдад хуваарилагдсан санах ойд хадгалагдана. Эхлээд бүхэлд нь тогтмол 5-д хуваагдана үнсэлт тогтмол 9, дараа нь энэ үйлдлийн үр дүнг fahr хувьсагчаас 32 тоог хассан үр дүнд үржүүлнэ.

Үр дүнг оператор 6-д харуулахын тулд объектыг ашиглана cout.Таван элементээс бүрдсэн гинж гарч ирнэ. Энэ бол шугам юм "Фаренгейт:", хувьсах утга фар, шугам ", Цельсийн градусаар:", хувьсах утга целлболон шинэ шугамын оператор endl.

Энэ хөтөлбөрийн сүүлчийн мэдэгдэл (мэдэгдэл 7) нь үүнээс буцаж, үнэ цэнийг гадаад орчинд шилжүүлэх зорилготой юм.

Дараа нь бид програмыг эмхэтгэдэг. Үүнийг хийхийн тулд хэрэгслийн самбар дээрх товчлуур эсвэл Ctrl+F7 товчлуурын хослолыг дарна уу. Гаралтын цонх (дэлгэцийн доод талд) 0 алдаа, 0 анхааруулга (0 алдаа, 0 анхааруулга) гэсэн мессежийг харуулах ёстой. Хэрэв алдаа байгаа бол эх хувилбарыг нь шалгана уу.

Програмыг эхлүүлэхийн тулд хэрэгслийн самбар дээрх товчлуур эсвэл Ctrl+F5 товчлуурын хослолыг дарна уу.

Хөтөлбөрийг эхлүүлэх үед бид орос тэмдэгтүүдийн оронд ???-г хардаг бөгөөд энэ нь MS DOS болон Windows үйлдлийн систем дэх кирилл үсгийг кодлох өөр өөр стандартаас үүдэлтэй юм. Үүнийг засахын тулд CharToOem функцийг програмд ​​нэмнэ үү (тодорхой болгохын тулд нэмэлтүүдийг улаанаар тодруулсан)

#оруулна

#оруулна

char* RUS(const char* текст)

CharToOem(текст, буф);

float fahr, cels;

cout<

cels = 5/9 * (фар - 32);

cout<

cout<

Чиг үүрэг Орос()үйл ажиллагааны гинжин хэлхээнд нэгээс олон удаа ашиглах боломжгүй<< для одного объекта cout, тиймээс бид үүнийг хоёр хуваасан.

Таны харж байгаагаар програмыг тогтвортой ажиллуулсны үр дүн тэг байна! Энэ нь илэрхийлэлийг хэрхэн үнэлдэгтэй холбоотой юм. 4-р операторыг дахин харцгаая. 5 ба 9 тогтмолууд нь бүхэл тоон төрлийнх тул тэдгээрийн хуваагдлын үр дүн мөн бүхэл тоо болно. Мэдээжийн хэрэг, цаашдын тооцооллын үр дүн нь тэгээс өөр зүйл байж болохгүй. Энэ алдааг засах нь маш энгийн - тогтмолуудын ядаж нэгийг нь бодит тоогоор бичихэд хангалттай, жишээлбэл:

cels = 5. / 9 * (fahr - 32);

Энгийн командуудаас (оператор) бүрдсэн программуудыг шугаман гэж нэрлэдэг.
Энгийн командууд (алгоритмын энгийн заавар) нь тэдгээрийг гүйцэтгэх явцад нөхцөлийг ашигладаггүй командууд юм. Энгийн операторуудад хуваарилалт, оролт, гаралтын командууд (операторууд), туслах алгоритмыг (дэд программ) дууддаг.

Даалгаврын оператор. Энэ нь зарим нэг хувьсагчийн одоогийн утгыг тохируулдаг эсвэл өөрчилдөг. Энэ нь энэ хувьсагчид хуваарилагдсан тодорхой санах ойн элементийн агуулгыг өөрчилдөг. Аливаа алгоритмын зорилго нь тодорхой санах ойн байршилд хүссэн утгыг олж авах явдал байдаг тул бараг ямар ч програм энэ операторыг агуулдаг. I/O операторууд. Стандарт өгөгдөл оруулах процедурыг тодорхой хувьсагчдын анхны утгыг тодорхойлоход ашигладаг бөгөөд утгыг гараас эсвэл файлаас оруулах хувьсагчийн нэрийг агуулсан процедурын нэр, оролтын жагсаалтаас бүрдэнэ. Хувьсагчдад тодорхой утгууд өгөгдөнө.
Ихэнхдээ анхны утгыг тодорхойлохын тулд даалгавар өгөх командаас илүү оруулах командыг ашиглах нь илүү тохиромжтой байдаг, учир нь хэрэв та програмыг өөр өөр анхны өгөгдөлтэй ашиглах шаардлагатай бол програмын текстийг өөрчлөх шаардлагагүй болно.
Хэрэв алгоритмын бичлэгт оруулах команд байгаа бол түүний гүйцэтгэл тасалдаж, удирдлага нь өгөгдөл оруулах боломжтой програм руу шилжинэ. Өгөгдлийг оруулсны дараа удирдлага нь алгоритмын дараагийн команд руу шилждэг.
Паскал хэл дээр өгөгдөл оруулах процедур дараах байдалтай байна.
READ (оролтын жагсаалт);
READLN (оролтын жагсаалт).
READ болон READLN процедурыг гүйцэтгэх үед програм нь өгөгдөл оруулахыг хүлээх төлөвт ордог. Хэрэв оролтын жагсаалтад хэд хэдэн хувьсагчийг зааж өгсөн бол тэдгээрийг нэг мөрөнд, бие биенээсээ хоосон зайгаар тусгаарлаж, эсвэл тусдаа мөрөнд (багананд) оруулж, Enter товчлуураар утга тус бүрийн оруулгыг хийж болно.
Жагсаалтын бүх хувьсагчийн утгыг оруулах хүртэл процедур дуусахгүй. Оруулсан утгуудын төрөл нь харгалзах хувьсагчийнхтай тохирч байх ёстой.
READLN хэллэг нь READ мэдэгдлээс ялгаатай бөгөөд шаардлагатай хэмжээний өгөгдлийг оруулсны дараа курсор дараагийн мөрөнд шилжинэ.
Хэрэв өгөгдлийг гараас оруулсан бол оролтын жагсаалт нь хувьсагчдын жагсаалт юм. таслалаар тусгаарлагдсан хувьсагчийн нэрсийн дараалал. Хэрэв оролт нь файлаас байгаа бол оролтын жагсаалтын эхний хувьсагч нь жинхэнэ файлын нэртэй холбоотой файлын хувьсагч байна.
Тооцооллын үр дүнг гаргах стандарт процедурыг тэдгээрийн утгыг дэлгэц, принтер эсвэл файл дээр харуулахад ашигладаг. Паскаль хэл дээр дүгнэлт хийх процедур нь дараах байдалтай байна.
WRITE (гаралтын жагсаалт);
WRITELN (гаралтын жагсаалт).
Гаралтын элементүүдийн жагсаалт нь оролтын горимоос хамаагүй өргөн юм. Үүнд:
утгыг харгалзах төхөөрөмж эсвэл файлд гаргах хэмжигдэхүүнүүдийн тодорхойлогч;
утгыг эхлээд тооцоолж, дараа нь төхөөрөмжид гаргах илэрхийллүүд;
утга (тоон, бэлгэдэл, мөр) болсон.
WRITE болон WRITELN хоёрын ялгаа нь WRITE хэллэгийн гаралт нь мониторын дэлгэц дээрх курсорын одоогийн байрлалаас эхэлж, гаралт дууссаны дараа курсор нэг мөрөнд үлддэгт оршино. WRITELN мэдэгдэл нь одоогийн байрлалаас утгуудыг хэвлэх ба курсор дараагийн мөрөнд шилжинэ. Та курсорыг шинэ мөрөнд шилжүүлэхийн тулд гаралтын жагсаалтгүйгээр WRITELN мэдэгдлийг ашиглаж болно.
Хэрэв гаралт нь мониторын дэлгэц рүү гарвал гаралтын жагсаалт нь хувьсагчийн жагсаалт буюу хувьсагчийн нэр, тогтмол эсвэл таслалаар тусгаарлагдсан илэрхийллийн дараалал юм. Хэрэв гаралт нь файлд байгаа бол гаралтын жагсаалтын эхний хувьсагч нь жинхэнэ файлын нэртэй холбоотой файлын хувьсагч байна.
Гаралтын тушаалд гаралтын жагсаалтын элементийн дараа та хоёр цэгээр тусгаарлагдсан гаралтын форматыг зааж өгч болно, i.e. утгууд байрлах дэлгэцийн өргөн. Бодит өгөгдлийг харуулахдаа та харуулахыг хүссэн бутархай хэсэгт аравтын бутархайн тоог зааж өгч болно.
Жишээ нь: бичих(A: 10: 3, B: 8).
Туслах алгоритмыг дуудах оператор. Паскаль нь процедурын дэд программууд болон функцийн дэд програмуудыг хэрэгжүүлдэг. Дэд программыг нэрээр нь дуудаж, бодит параметрүүдийг заана. Энэ тохиолдолд бодит аргументуудын оронд тодорхой утга, бодит хувьсагчийн нэр, илэрхийлэл, үр дүнгийн оронд зөвхөн бодит хувьсагчийн нэр байж болно. Энэ тохиолдолд параметрийн холбогдох жагсаалт дахь албан ёсны болон бодит параметрүүдийн тоо, төрөл, зорилго нь таарч байх ёстой.

Дээр бид шугаман програмчлалын схем болгон бууруулж болох янз бүрийн практик асуудлуудыг авч үзсэн. Эдгээр асуудлуудын заримд шугаман хязгаарлалт нь тэгш бус хэлбэртэй, заримд нь тэгш байдал, бусад нь хоёулаа хоёулаа байсан.

Энд бид тэгш байдлын хязгаарлалттай шугаман програмчлалын бодлогыг авч үзэх болно - шугаман програмчлалын үндсэн бодлого (BLP).

Ирээдүйд бид танд тэгш бус байдлын хязгаарлалттай асуудлаас OPLP руу хэрхэн шилжихийг харуулах болно.

Шугаман програмчлалын гол асуудлыг дараах байдлаар тодорхойлсон.

Хэд хэдэн хувьсагч байдаг

Шугаман тэгшитгэлийн системийг хангах эдгээр хувьсагчдын сөрөг бус утгыг олох шаардлагатай.

ба үүнээс гадна шугаман функцийг багасгах болно

Мэдээжийн хэрэг, шугаман функцийг хамгийн багадаа биш, харин дээд тал руу нь эргүүлэх шаардлагатай бол функцийн тэмдгийг өөрчилж, оронд нь функцийг авч үзвэл өмнөх рүү хялбархан бууруулж болно.

Аливаа хувьсагчийн багцыг OLP-ийн зөвшөөрөгдөх шийдэл гэж нэрлэе

хангасан тэгшитгэлүүд (2.1).

Шугаман функц (2.2) минимум болох зөвшөөрөгдөх шийдлүүдийн оновчтой шийдийг бид нэрлэх болно.

Шугаман програмчлалын үндсэн асуудал нь шийдэлтэй байх албагүй.

Тэгшитгэл (2.1) нь хоорондоо зөрчилдөж магадгүй юм; Тэд сөрөг бус утгын бүсэд биш харин шийдэлтэй байж магадгүй юм. Дараа нь OLP-д зөвшөөрөгдөх шийдэл байхгүй. Эцэст нь хэлэхэд, OLP-ийн зөвшөөрөгдөх шийдлүүд байгаа болох нь тогтоогдсон боловч тэдгээрийн дунд оновчтой шийдэл байдаггүй: зөвшөөрөгдөх шийдлүүдийн бүс дэх L функц нь доороос хязгааргүй юм.

OPLP-ийн ийм шинж чанаруудын жишээнүүдтэй бид дараа нь танилцах болно.

Юуны өмнө OLP-ийн зөвшөөрөгдөх шийдлүүд байгаа эсэх асуудлыг авч үзье.

Энэ асуудлыг шийдвэрлэхдээ бид багасгах шаардлагатай L шугаман функцийг хасч болно - боломжтой шийдлүүд байгаа эсэхийг зөвхөн тэгшитгэлээр тодорхойлно (2.1).

Тэгэхээр тэгшитгэлийн систем (2.1) байг. Энэ системийг хангадаг сөрөг бус утгууд байна уу? Энэ асуудлыг математикийн тусгай салбар болох шугаман алгебрт авч үздэг.

Шугаман алгебрийн зарим заалтуудыг харгалзах теоремуудын нотолгоонд анхаарлаа хандуулалгүйгээр товч танилцуулъя.

Шугаман тэгшитгэлийн системийн матриц

-ын коэффициентуудаас бүрдсэн хүснэгт юм

Шугаман тэгшитгэлийн системийн өргөтгөсөн матриц нь чөлөөт нэр томъёоны баганатай ижил матриц юм.

Матрицын зэрэглэл нь матрицаас зарим мөр, багана устгах замаар олж авч болох тэгээс өөр тодорхойлогчийн хамгийн дээд эрэмбэ юм.

Шугаман алгебрийн хувьд шугаман тэгшитгэлийн систем (2.1) нийцтэй байхын тулд системийн матрицын зэрэглэл нь түүний өргөтгөсөн матрицын зэрэгтэй тэнцүү байх шаардлагатай бөгөөд хангалттай гэдгийг баталсан.

Жишээ 1. Дөрвөн үл мэдэгдэх гурван тэгшитгэлийн систем өгөгдсөн.

Энэ систем нь хамтын ажиллагаатай эсэхийг тодорхойлох уу?

Шийдэл. Системийн матриц:

Өргөтгөсөн матриц:

Эхний матрицын зэрэглэлийг тодорхойлъё. Энэ нь 3-аас их байж болохгүй (мөрийн тоо 3 тул). Матрицаас зарим баганыг устгах замаар тодорхойлогч үүсгэцгээе, жишээ нь сүүлийнх. Бид авдаг

Энэхүү тодорхойлогчийг сайн мэддэг дүрмийн дагуу тооцоолсноор бид дараахь зүйлийг олж авна.

Энэ тодорхойлогч нь тэгтэй тэнцүү биш бөгөөд энэ нь системийн матрицын зэрэглэл нь 3-тай тэнцүү гэсэн үг юм. Ижил тодорхойлогчийг элементүүдээс бүрдүүлж болох тул өргөтгөсөн матрицын зэрэг нь мөн 3-тай тэнцүү байна. өргөтгөсөн матрицын. Матрицуудын зэрэглэлүүдийн тэгш байдлаас харахад тэгшитгэлийн систем тууштай байна.

Жишээ 2. Гурван үл мэдэгдэх хоёр тэгшитгэлийн системийн нийцтэй байдлыг судал.

Шийдэл. Өргөтгөсөн системийн матриц:

(түүний зүүн тал нь системийн матриц юм).

Бүх боломжит хоёрдугаар эрэмбийн тодорхойлогчдыг бүрдүүлж системийн матрицын зэрэглэлийг олъё.

Тиймээс системийн матрицын элементүүдээс бүрдэх боломжтой бүх хоёрдугаар эрэмбийн тодорхойлогч тэгтэй тэнцүү байна; Энэ нь системийн энэ матрицын зэрэглэл байна гэсэн үг юм

Өргөтгөсөн матрицын зэрэглэлийг олъё. Тодорхойлогч

Тиймээс өргөтгөсөн матрицын зэрэг нь системийн матрицын зэрэгтэй тэнцүү биш байна: Grfg, тиймээс тэгшитгэлийн систем нь нийцэхгүй байна.

Жишээ 3. Дөрвөн үл мэдэгдэх гурван тэгшитгэлийн системийн тууштай байдлыг судал.

Шийдэл Өргөтгөсөн системийн матриц (системийн матрицтай хамт):

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

Хэрэв тодорхойлогчийн аль нэг мөр нь түүний бусад хоёр эгнээний шугаман хослол бол тодорхойлогч нь тэгтэй тэнцүү байх нь мэдэгдэж байна. Манай тохиолдолд гуравдахь мөр нь эхний хоёрын шугаман хослол юм: үүнийг авахын тулд эхний мөрийг хоёр дахь нь давхар нэмэхэд хангалттай.

Системийн матрицын элементүүдээс бүрдсэн аливаа гуравдагч эрэмбийн тодорхойлогч ижил шинж чанартай байдаг тул системийн матрицын зэрэглэлийг шалгахад хялбар байдаг.

Тэг биш хоёр дахь эрэмбийн тодорхойлогч байдаг тул жишээ нь,

Дараа нь системийн матрицын зэрэглэл нь тэнцүү байна

Үүнтэй ижил үндэслэлийг ашиглан бид өргөтгөсөн матрицын зэрэглэл хоёртой тэнцүү байгаа эсэхийг шалгана: Тиймээс тэгшитгэлийн систем нь нийцтэй байна.

Энэ жишээн дээрх гурван тэгшитгэл нь бие даасан биш гэдгийг анхаарна уу: гурав дахь тэгшитгэлийг эхний хоёроос хоёр дахь тэгшитгэлийг хоёроор үржүүлж, эхний дээр нэмэх замаар гаргаж болно. Энэ нь гурав дахь тэгшитгэл нь эхний хоёрын энгийн үр дагавар гэсэн үг юм. Системд зөвхөн хоёр бие даасан тэгшитгэл байдаг: энэ нь системийн матрицын зэрэглэлээр илэрхийлэгддэг.

Хэрэв OLP-ийн тэгшитгэлийн хязгаарлалтын систем нийцэж байвал системийн матриц ба түүний өргөтгөсөн матриц ижил зэрэгтэй байна.

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

Системийн зэрэглэл нь тэгшитгэлийн тооноос их байж болохгүй нь ойлгомжтой.

Системийн зэрэглэл нь нийт хувьсагчийн тооноос их байж болохгүй нь ойлгомжтой.

Үнэн хэрэгтээ системийн матрицын зэрэг нь матрицын элементүүдээс бүрдэх тодорхойлогчийн хамгийн дээд эрэмбээр тодорхойлогддог; түүний мөрүүдийн тоо нь -тэй тэнцүү тул ; түүний баганын тоо тэнцүү байх тул .

Шугаман програмчлалын бодлогын бүтэц нь хязгаарлалтын системийн зэрэглэлээс ихээхэн хамаардаг (2.1).

Эхлээд (2.1) системд багтсан шугаман бие даасан тэгшитгэлийн тоо n хувьсагчийн тоотой тэнцүү байх тохиолдлыг авч үзье. OZLP-ийн тэгшитгэл-хязгаарлалтын систем нь дараахь хэлбэртэй байна.

Коэффицентээс бүрдэх тодорхойлогч нь

тэгтэй тэнцүү биш. Энэ тохиолдолд (2.4) систем өвөрмөц шийдэлтэй байдаг нь алгебраас мэдэгдэж байна. Хэмжигдэхүүнийг олохын тулд тодорхойлогч дахь баганыг чөлөөт нэр томъёоны баганаар сольж, хуваахад хангалттай.

Тиймээс, OLP-ийн хязгаарлалтын тэгшитгэлийн систем нь өвөрмөц шийдэлтэй бол:

Хэрэв энэ уусмал дахь хэмжигдэхүүнүүдийн дор хаяж нэг нь сөрөг байвал энэ нь үүссэн уусмалыг хүлээн зөвшөөрөх боломжгүй тул OLP-д шийдэл байхгүй гэсэн үг юм.

Хэрэв бүх хэмжигдэхүүн нь сөрөг биш бол олсон уусмалыг зөвшөөрнө. Энэ нь бас оновчтой (бусад байхгүй учраас) нь ойлгомжтой.

Энэ өчүүхэн хэрэг бидний сонирхлыг татахгүй нь ойлгомжтой.

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

© 2024 ermake.ru -- Компьютер засварын тухай - Мэдээллийн портал