Функц ба модульчлагдсан програмчлал нь компьютерийн програмчлалын чухал хэсэг юм. Тэд бидэнд ойлгомжтой, ойлгоход хялбар хөтөлбөрүүдийг бий болгоход тусалдаг. Энэ хичээл нь энгийн хэллэг болон өдөр тутмын жишээ ашиглан функц, модульчлагдсан програмчлал гэж юу гэсэн үг болохыг тайлбарлах болно. Үзэл баримтлал бүрийг алхам алхмаар тайлбарласан болно. Та функцүүд гэж юу болох, бид тэдгээрийг яагаад ашигладаг, тэдгээр нь бидний кодыг хэрхэн эмх цэгцтэй, ажиллахад хөгжилтэй болгодог болохыг мэдэх болно. Мөн бид модульчлагдсан програмчлал нь том асуудлыг хэрхэн жижиг, удирдах боломжтой хэсгүүдэд хуваадаг болохыг судлах болно.
Функц нь нэг ажил хийдэг жижиг машинтай адил юм. Програмчлалд функц нь дуудагдах үед тодорхой ажлыг гүйцэтгэдэг кодын блок юм. Худалдааны машины талаар бод. Мөнгө хийх үед машин танд хөнгөн зууш өгдөг. Алхамууд (мөнгө тавих, зууш сонгох, зууш авах) бүгд энэ функцийн хэсэг юм.
Функц нь оролтыг авч, боловсруулаад дараа нь гаралтыг буцаана. Жишээлбэл, хэрэв функц хоёр тоог нэмбэл тоонуудыг оролт болгон авч, нийлбэрийг гаралт болгон өгнө. Энэ санаа нь урлагт шинэ өнгө авахын тулд хоёр өнгийг хэрхэн хольж болохтой төстэй юм. Оролтууд нь өнгө, гаралт нь шинэ өнгө юм.
Функц бүр хэд хэдэн чухал хэсгүүдтэй байдаг:
Жишээлбэл, мэндчилгээ нэртэй энгийн функц нь нэрийг оролт болгон авч, нөхөрсөг мэндчилгээг буцаана. Функцийн алхамууд нь яг л сэндвич хийхтэй адил ажилладаг: та орцуудаа сонгоод, хольж, дараа нь сэндвичийг амтлаарай.
Нэг жишээ харцгаая. Та хүнийг нэрээр нь угтан авах функц хүсч байна гэж бодъё. Функц хэрхэн харагдахыг энд харуулав.
def greet(нэр): буцаах "Сайн уу, " + нэр + "!"
Энэ функцэд:
Модульчлагдсан програмчлал нь том асуудлыг жижиг, шийдвэрлэхэд хялбар хэсгүүдэд хуваах явдал юм. Програмын хэсэг бүр нь тусдаа модуль эсвэл функцээр хийгдсэн байдаг. Ингэснээр програм нь бүхэл бүтэн зургийг бүрдүүлэхийн тулд хэсэг бүр нь хоорондоо таарч эвлүүлдэг тоглоом шиг болно.
Та LEGO цайз барина гэж төсөөлөөд үз дээ. Бүх шилтгээнийг нэг дор барихын оронд цамхаг, хана, хаалгыг тусад нь барь. Дараа нь та эдгээр хэсгүүдийг нэгтгэж, бүрэн цайзыг бүрдүүлнэ. Програмчлалын хувьд модульчлагдсан програмчлал нь LEGO хэсгүүдээр бүтээхтэй адил юм. Хэсэг (функц эсвэл модуль) бүр өөрийн ажлыг гүйцэтгэдэг.
Функц болон модульчлагдсан програмчлалыг ашиглах олон шалтгаан бий:
Эдгээр санаанууд нь программистуудад нарийн төвөгтэй асуудлуудыг удирдах, энгийн аргаар илүү том төслүүдийг бүтээхэд тусалдаг.
Өөр өөр функцууд болон тэдгээр нь хэрхэн ажилладагийг харуулсан жишээнүүд энд байна.
Энэ функц нь хоёр тоог нэмнэ. Энэ нь хоёр тоог аваад нийлбэрийг нь өгдөг шидэт хайрцагтай адил юм.
Жишээлбэл, 3 ба 2-ыг оруулснаар үр дүн нь 5 болно. Доорх кодыг үзнэ үү:
Def add(a, b): a + b буцаана
Энэ функц нь хоёр тоог нэгтгэх шаардлагатай үед тусалдаг. Хоёр өөр өнгийг холиод шинэ өнгө гаргадаг шиг энд хоёр тоог хольж нийлбэрийг нь гаргана.
Энэ функц нь тоо тэгш эсвэл сондгой эсэхийг хэлж өгдөг. Тэгш тоог 2-т тэнцүү хувааж болдог бол сондгой тоогоор хувааж болохгүй.
Танд сагс алим байна гэж төсөөлөөд үз дээ. Хэрэв та алимыг хосоор нь байрлуулахыг оролдоод нэг алим орхисон бол энэ тоо сондгой болно. Функц нь энгийн тест шиг ажилладаг:
def шалгах_тоо(тоо): хэрэв тоо % 2 == 0 бол: "Тэгш" гэж буцаана өөр: "сонин" гэж буцаана
Таныг тоо оруулах үед функц нь модулийн операторыг ашиглан шалгалт хийдэг (энэ нь хуваагдсаны дараа үлдэгдлийг олдог). Хэрэв 2-т хуваагдах үед үлдсэн нь тэг байвал "тэгш" гэсэн утгатай; Үгүй бол энэ нь "сондгой" гэж буцаана.
Энэ функц нь нэрийг оролт болгон авч, хувийн мэндчилгээг буцаана. Жишээлбэл, хэрэв та "Алис" нэрийг өгвөл гаралт нь "Сайн уу, Алис!"
def үүсгэх_мэндчилгээ(нэр): буцах "Сайн уу, " + нэр + "!"
Энэхүү энгийн жишээ нь функцуудыг найрсаг мессеж үүсгэхэд хэрхэн ашиглаж болохыг харуулж байна. Функцийн дуудлага бүр яг л хаалганы хонх дарж, халуун дотноор угтан авахтай адил ажилладаг.
Модульчлагдсан програмчлалд та бусад функц доторх функцуудыг ихэвчлэн ашигладаг. Үүнийг "функцын найрлага" гэж нэрлэдэг. Энэ нь өөр өөр найрлага ашиглан сэндвич барихтай адил юм.
Бүрэн хоол хийх хөтөлбөрийг авч үзье. Та салат, сэндвич хийх тусдаа функцтэй байж болно. Дараа нь өөр функц эдгээр функцуудыг дуудаж, бүрэн хоолоор үйлчилнэ.
def make_salad(): "Шинэ салат" буцаах def make_sandwich(): "Амттай сэндвич" буцаах def make_meal(): салат = make_salad() сэндвич = make_sandwich() буцах салат + "" + сэндвичтэй
make_salad болон make_sandwich гэсэн жижиг функцуудыг нэгтгэснээр make_meal функц нь бүрэн мессежийг үүсгэдэг. Хэрэв та сэндвичний жорыг өөрчлөх шаардлагатай бол хоолны кодыг бүхэлд нь биш зөвхөн make_sandwich функцийг өөрчилнө.
Том асуудалтай тулгарвал түүнийг хэсэг хэсгээр нь салгаснаар шийдвэрлэхэд хялбар байдаг. Жижиг хэсэг бүрийг функцээр шийдэж болно. Энэ бол модульчлагдсан програмчлалын гол санаа юм.
Та маш эмх замбараагүй өрөөтэй байна гэж төсөөлөөд үз дээ. Бүгдийг нэг дор цэвэрлэхийн оронд та дараах төлөвлөгөө гаргаж болно.
Алхам бүр нь энгийн бөгөөд хялбар байдаг. Бүх алхмуудыг хийж дуусгахад танай өрөө цэвэрхэн болно. Програмчлалд алхам бүрийг функцээр удирддаг. Энэ нь асуудлыг шийдвэрлэхэд илүү хялбар болгодог.
Модуль нь хэд хэдэн функц агуулсан файл юм. Та модуль үүсгэхдээ кодоо дахин ашиглах боломжтой, цэгцтэй болгодог. Жишээлбэл, та үндсэн арифметикийн функцуудыг агуулсан math_tools нэртэй модулийг үүсгэж болно.
math_tools дээр нэмэх , хасах , үржүүлэх , хуваах зэрэг функцүүд байж болно. Дараа нь та кодыг дахин бичихгүйгээр олон төрлийн программд math_tools ашиглаж болно.
# Энэ бол math_tools.py нэртэй модулийн жишээ юм Def add(a, b): a + b буцаана def хасах(a, b): буцаах a - b def үржүүлэх(a, b): a * b буцаана def хуваах(a, b): хэрэв b != 0: a / b буцаана өөр: буцах "Тэгээр хувааж болохгүй!"
Энэ модулийг өөрийн программдаа оруулж өгснөөр та шаардлагатай үедээ функцуудыг дуудаж болно. Энэ нь цагийг хэмнэж, ажлыг тань цэвэрхэн байлгах болно.
Хэд хэдэн функцийг хамтад нь ашиглах үед энэ нь танд илүү том програм бүтээхэд тусална. Функц бүр нь багийн ажилчид шиг бие даан ажилладаг. Хэрэв нэг ажилчин сайн ажиллахгүй бол та бүхэл бүтэн багт нөлөөлөхгүйгээр тэр хэсгийг сольж болно.
Жишээлбэл, энгийн тоглоом нь move_player , check_collision , update_score зэрэг функцтэй байж болно. Функц бүр нэг ажлыг хариуцдаг. Тэд хамтдаа тоглоомыг жигд ажиллуулдаг.
Функцуудын тодорхой бөгөөд энгийн нэрийг сонгох нь маш чухал юм. Сайн нэр нь функц нь юу хийдгийг хэлж өгдөг. Та тооцоолох_нийт нэртэй функцийг хараад энэ нь утгуудыг нэмдэг гэдгийг шууд мэдэж болно. Энгийн бөгөөд ойлгомжтой нэрс нь кодыг унших, ойлгох, ашиглахад хялбар болгодог.
Урт эсвэл төөрөгдүүлсэн нэр хэрэглэхээс зайлсхий. Функцийн гүйцэтгэж буй ажилтай шууд холбоотой үгсийг ашигла. Энэ зуршил нь шинэ програмистуудад ч функц бүр юу хийдгийг ойлгоход тусалдаг.
Заримдаа функцүүд тэгээр хуваах гэх мэт асуудалтай тулгардаг. Эдгээр алдааг эелдэг байдлаар зохицуулах нь чухал юм. Олон функцууд ийм алдаа байгаа эсэхийг шалгаж, ямар нэг зүйл буруу болвол тустай мессеж өгдөг.
Жишээлбэл, хуваах функцэд бид дараахыг харж байна:
def хуваах(a, b): хэрэв b != 0: a / b буцаана өөр: буцах "Тэгээр хувааж болохгүй!"
Энэ код b нь тэг эсэхийг шалгадаг. Хэрэв тийм бол энэ функц таныг тэгээр хувааж болохгүй гэдгийг хэлж өгнө. Энэ нь програмыг сүйрүүлэхээс сэргийлж, юу буруу болсныг ойлгоход тусална.
Параметрүүд нь функц доторх орлуулагч юм. Та функцийг дуудахдаа аргумент гэж нэрлэгддэг утгуудыг дамжуулдаг. Жишээлбэл, add(a, b) функцэд a , b нь параметрүүд юм. Хэрэв та add(10, 5) функцийг дуудах үед 10 ба 5 утгууд аргумент болно.
Энэ арга нь функцийг уян хатан болгодог. Та функцийг дуудах бүртээ өөр өөр аргумент ашиглаж болно. Энэ нь жор шиг юм. Хэдийгээр та салатанд өөр өөр жимс хэрэглэдэг байсан ч алхамууд нь ижил хэвээр байх бөгөөд та амттай салат авах болно.
Өдөр тутмын олон технологиуд нь функц, модульчлагдсан програмчлалд тулгуурладаг. Бодит амьдралаас хэдэн жишээ дурдъя:
Модульчлагдсан програмчлал нь уян хатан, шинэчлэхэд хялбар системийг бий болгоход тусалдаг. Нэг хэсгийг өөрчлөх эсвэл засах шаардлагатай үед зөвхөн холбогдох модулийг тохируулна. Ингэснээр ерөнхий систем хэвийн ажиллаж байна.
Шинэ програмистууд функц бичихдээ гаргадаг хэд хэдэн нийтлэг алдаа байдаг. Эдгээрийг мэдсэнээр та эдгээрээс зайлсхийх боломжтой:
Эдгээр алдаанаас зайлсхийснээр та илүү цэвэр, үр дүнтэй код бичих боломжтой. Энэ нь таны програмуудыг арчлах, ойлгоход хялбар болгодог.
Функцууд нь модулиудын барилгын материал юм. Модуль нь олон функц агуулсан багажийн хайрцагтай адил юм. Та ижил төстэй хэрэгслүүдийг хамтад нь хадгалдаг шигээ холбоотой функцүүдийг модульд бүлэглэнэ. Ингэснээр та тодорхой ажил хийх шаардлагатай үед хаана хайхаа мэддэг.
Жишээлбэл, танд математикийн үйлдлүүдэд зориулсан модуль, мөрийг зохицуулах модуль, огноотой ажиллах өөр модуль байж болно. Модуль бүр өөрийн талбайтай холбоотой функцүүдийг зохион байгуулдаг. Энэ бүтэц нь төслүүд томрох үед маш их тустай.
Програмчлалд том асуудалтай тулгарах бүрд хамгийн сайн арга бол үүнийг жижиг асуудал болгон хуваах явдал юм. Жижиг асуудал бүрийг функц бичих замаар шийдэж болно. Бүх жижиг хэсгүүдийг шийдэж дууссаны дараа тэдгээрийг нэгтгэж, бүрэн шийдлийг бүрдүүлнэ.
Энэ арга нь эвлүүлдэг тоглоомыг шийдэхтэй төстэй юм. Та хэсгүүдээс эхэлж, дараа нь тэдгээрийг нэг нэгээр нь холбож, бүрэн зургийг хараарай. Жижиг хэсэг бүр зөв ажиллаж байгааг мэдэх нь эцсийн үр дүнг хүчтэй, найдвартай болгодог.
Функцуудаа бичихдээ хэдэн энгийн зөвлөгөөг энд оруулав.
Эдгээр зөвлөмжийг ашигласнаар та олон төсөлд дахин ашиглаж болох хүчтэй, ойлгоход хялбар функцүүдийг бий болгож чадна.
Програмд функц бичих, ашиглах энгийн үйл явцыг алхам алхмаар авч үзье.
Энэ процесс нь модульчлагдсан байдлаар програм бүтээхэд тусална. Жижиг хэсэг бүрийг функцээр гүйцэтгэдэг бөгөөд бүх хэсгүүд нь эцсийн хөтөлбөрт нэгддэг.
Энэ хичээлийн гол санааг авч үзье:
Энэ хичээл нь функцууд болон модульчлагдсан программчлалыг ашиглах нь таны кодчиллын амьдралыг хэрхэн хялбар, хөгжилтэй болгож болохыг харуулсан. Функц бүр нь том төслийн нэг хэсгийг дуусгах туслах хэрэгсэлтэй адил юм. Эдгээр хэрэгслүүдийг нэгтгэснээр та эмх цэгцтэй, эмх цэгцтэй, ойлгоход хялбар програмуудыг бүтээдэг.
Сайн програмчлалын түлхүүр бол асуудлыг жижиг, удирдах боломжтой хэсгүүдэд хуваах явдал гэдгийг санаарай. Та тоо нэмэх, хэн нэгэнтэй мэндлэх, тоглоом бүтээх гэх мэт функцүүд үүнийг алхам алхмаар хийхэд тусална. Модульчлагдсан програмчлал нь энгийн, ойлгомжтой хэсгүүдийг ашиглан нарийн төвөгтэй системийг бий болгох стратеги юм.
Функц бичих, кодоо модульд оруулах дадлага хийснээр та асуудлыг шийдвэрлэхдээ илүү сайн болно. Таны бичсэн жижиг функц бүр нь илүү том, илүү гайхалтай програмуудыг бий болгох алхам юм. Ямар ч хөгжилтэй оньсого эсвэл барилгын багцтай адил кодоо үргэлжлүүлэн туршиж, туршиж, сайжруулаарай!