Хусусиятҳои забони барномасозӣ барои таълим
Дар айни замон, ҳангоми таълими забони барномасозӣ масъалаи интихоби дараҷаи аввал меистад. Маҷмӯи вижагиҳои таснифот муайян карда шуд ва якчанд забонҳои барномасозӣ, ки метавонанд ҳамчун забони омӯзиш истифода шаванд, аз рӯи хусусиятҳо муқоиса карда шуданд.
Мавҷудияти чунин нуқтаи назарҳои гуногун аз он шаҳодат медиҳад, ки ҳеҷ яке аз забонҳои барномарези номзади бебаҳо ба назар намерасад. Pascal ҳамчун забони омӯзиши барномасозӣ дигар ба талаботи муосир ҷавобгӯ нест. Қариб 40 сол пас аз таърифи забон гузашт, барномасозӣ бисёр тағир ёфт: технологияҳои кӯҳна «мурданд», навҳо ба дунё омаданд. Парадигмаи барномасозии мурофиавӣ бо ҷойҳои пешрафта иваз карда шуд: барномасозӣ ба объектнигаронидашуда, ҳамбастагии барномарезӣ, барномасозии ҷанбаӣ. Пайравони Pascal забонҳои нави барномасозӣ мебошанд: Modula-2, Oberon, Zonnon.
Забонҳои нави барномасозии саноатӣ бисёр пайдо шуданд. Дар айни замон, дар рушди системаҳои иттилоотӣ бартарии барномарезии ба объект нигаронидашуда ва забонҳои ба объект нигаронидашуда — ворисони C: C++, C # ва Java бартарият доранд. Аммо, таҷрибаи истифодаи онҳо дар омӯзиш нишон медиҳад, ки истифодаи ин забонҳо барои омӯзиш бо якчанд сабаб хеле душвор аст. Якум, забонҳои барномасозии саноатӣ дар муҳити ҳамгирошудаи калон ва мураккаб татбиқ карда мешаванд. Дуюм, худи забонҳои саноатӣ калон ва мураккаб мебошанд. Масалан, стандарти забони C++ ин китобест, ки ҳаҷми он 792 саҳифа аст. Сеюм, китобхонаҳои калон ва мураккаби стандартӣ ҳамчун як ҷузъи забонҳои саноатӣ амалӣ карда мешаванд. Ва ниҳоят, ин забонҳо якпорчагии консептуалӣ надоранд ва бисёр хусусиятҳои мушаххасро вобаста ба платформаи татбиқ дарбар мегиранд.
Visual Basic ҳатто камтар мувофиқ аст. Дар айни замон ин забон дар коркарди саноатӣ амалан истифода намешавад. Visual Basic аз тарафи Microsoft таҳия шудааст ва ба дигар пешравиҳои ин ширкат равона шудааст: бастаи MS Office ва системаи амалиётии Windows.
Талаботи барномасозӣ барои омӯхтани забон. Забони барномасозӣ барои омӯзиш бояд «хурд» бошад ва ҳамзамон қавӣ бошад. Ҳадди аққал кам шудани консепсияҳо фаҳмиши забонро осон мекунад ва хатари хатогиҳои барномаро ба таври назаррас коҳиш медиҳад. Сохтани забон набояд аз хусусиятҳои сахтафзории платформа ва аз системаи амалиётӣ вобаста набошад — ин талабот ҳангоми эҷоди Pascal буд. Гузашта аз ин, шакли синтаксиси сохтор ба осонии ба даст овардани забон ва дараҷаи фаҳмиши барномаҳо ба таври назаррас таъсир мерасонад. Бо вуҷуди ин, забони омӯзишӣ ба забонҳои муосири саноатӣ бояд наздик бошад, аз ин рӯ, операторони маъмултарини назорат намудҳои типи оддии додаҳо ва амалиёт бо онҳо бояд дар он муайян карда шаванд.
Ба монанди ҳама гуна забони барномасозии саноатӣ, воситаҳои сохтани агрегатҳои маълумот — контейнерҳо бояд бо забони таълимӣ муайян карда шаванд. Аммо, бояд қайд кард, ки дар забонҳои саноатӣ ин воситаҳо хеле гуногун ва гуногунранг ҳастанд, ки натиҷаи рушди эволютсионӣ мебошад. Ин ҳолат барои барномасозони навовар мушкилот эҷод мекунад. Ҳамзамон, қариб ҳама контейнерҳо дорои хусусиятҳои умумӣ мебошанд, аз ин рӯ ҳангоми таълими забони барномасозӣ баъзе навъи контейнерро муайян кардан беҳтар аст.
Аён аст, ки забони барномасозӣ барои таълим бояд равиши ба объект нигаронидашударо дастгирӣ кунад. Бо вуҷуди ин, барои омӯхтани алгоритмҳо забон низ бояд парадигми мурофиавиро дастгирӣ кунад. Илова бар ин, воситаҳои пешгирии ҳолати фавқулодда бояд бо забон муайян карда шаванд, ки ба механизми тақрибан истисноӣ монанд аст. Ҳатмӣ ба назар мерасад дастгирӣ бо забони барномаҳои бисёрсоҳавӣ.
Ҳамин тариқ, намудҳои зерин бояд ба забони барномасозӣ барои таълим муайян карда шаванд:
— маҷмӯи намудҳои маълумоти ибтидоӣ;
— бисёр амалиёти маъмулӣ бо навъҳои элементарӣ;
— маҷмӯи ҳадди ақали операторони назорат;
— маҷмӯи хурди маҷмӯаҳои пурқуввати иттилоот;
— воситаҳои муайянсозии функсияҳои нав;
— дастгирии амалиётҳои истисноӣ;
— механизмҳои муайян кардани намудҳои нав (синфҳо);
— дастгирии модулӣ.
Дар бораи синтаксиси забони таълим махсус қайд кардан лозим аст. Дар назари аввал, комилан возеҳ аст, ки синтаксис бояд ба C — монанд бошад, зеро ҳамаи забонҳои маъмултарини саноатӣ ин синтаксисро доранд. Аммо, синтаксиси ба “соф” — C доимӣ ва пайдарпай нест, бинобарин истифодаи синтаксиси омехта аз Pascal ва C беҳтар аст.
Як чизи дигарро бояд гуфт: татбиқи забони барномасозӣ барои таълим дар доираи муҳити омӯзишӣ набояд он қадар самарабахш бошад. Сифати аз ҳама муҳимтар дар омӯзиш ин чандирии максималӣ ва тарроҳӣ мебошад.
Забони барномасозӣ бояд бо муҳити ҳамгирошудаи омӯзиш дастгирӣ карда шавад, ки он як қатор хусусиятҳои хоси худро аз системаҳои стандартии саноатӣ фарқ кунад. Дар ҳама гуна муҳити ҳамгироии профессионалӣ библиотекаҳои сершумори системавӣ татбиқ карда мешаванд. Аммо, татбиқ ва пайвасти онҳо ба муҳит амалан аз забони барномасозӣ вобастагӣ надорад ва тавассути василаи беруна сурат мегирад. Муҳити таълимӣ, илова ба воситаҳои стандартӣ, бояд механизми содда ва мустақили татбиқи платформаи ҷамъкунии ҷузъҳои нармафзорро таъмин намояд.
Муайян намудани хосиятҳои асосии забон. Намудҳо ва амалиёти ибтидоӣ. Ҳама намудҳои дар забон муайяншуда аз насли пешфарзҳои синфи асосӣ Object мебошанд. Ба намудҳои ибтидоӣ дохил мешаванд: ададҳо(integer), воқеӣ (real), мантиқӣ (bool). Маҷмӯи амалҳои дарунсохт маҷмӯи амалиётҳоест, ки дар C++ муайян шудаанд ва амалҳои арифметикӣ (+, -, *, /,%), афзоиш ва коҳиш (++, —), амалиётҳои муқоисавӣ (==,! = , <,>, <=,> =), амалиётҳои мантиқӣ (&, |, ^,!), амалиётҳои таъини (=, + =, — =, * =, / =,% =, & =, | =, ^ =). Семантикаи амалиётҳо ба семантикаи амалиётҳои C++ мувофиқат мекунад. Пешниҳоди конканҳои намудҳои ибтидоӣ анъанавӣ аст.
Таркиби намуди маълумотҳо. Дар забон танҳо як маҷмӯи маълумот мавҷуд аст – контейнер(container). Таърифи контейнер, хосиятҳои он ва амалиётҳои маъмулии он дар тавсиф шудааст, бинобар ин бо ин кифоягӣ намекунем.
Ҳарфҳо ва сатрҳо. Ин навъҳои маълумот бояд алоҳида қайд карда шаванд, ки аввалан, маҷмӯи амалиёт бо аломати (char) аз амалиёт бо дигар намудҳои маълумоти ибтидоӣ хеле фарқ мекунад. Масалан, амалиёти табдилдиҳии аломатҳо талаб карда мешавад. Аксар вақт барои муайян кардани рамз ба ҳарф (ҳарф, рақам, фосила) лозим аст. Дуввум, навъи аломат нисбат ба дигар намудҳои маълумоти ибтидоӣ бештар аз платформа ва системаи амалиётӣ вобаста аст.
Сатр контейнерест, ки барои нигоҳ доштани аломатҳо махсус аст, аз ин рӯ амалиёти сатр аз амалиётҳои оддии контейнер каме фарқ мекунад ва барои сатрҳо анъанавӣ аст: муттаҳидсозӣ, интихоб кардани зерхат, гузоштан ва нест кардани зерқисмат ва ҷустуҷӯи зербанди. Навъи махсуси сатр ифодаҳои муқаррарӣ мебошанд, ки дар забонҳои барномасозии саноатӣ воқеан стандарт шуданд. Тасвири ифодаи константҳои аломатӣ ва сатр баробари дар C++ аст.
Тағйирёбандаҳо, истинодҳо(силкаҳо), константҳо ва ифодаҳо. Эъломияи тағйирёбанда намуд, ном ва арзиши ибтидоии имконпазирро таъин мекунад. Барои тағирёбандагони ададӣ гузоштани доираи тағирот мумкин аст. Барои тағирёбандаҳои сатр, дарозии ҳадди аксар иҷозат дода мешавад. Эъломи доимӣ бо калимаи калидии доимӣ нишон дода мешавад.
Ҳамчун арзиши аввалия, ифодаи намуди мувофиқро нишон додан мумкин аст. Ба ибораҳо омехта кардани амалиётҳои шаклҳои гуногун иҷозат дода намешавад. Табдили нав бо нобаёнӣ иҷро намешавад, ба истиснои ададҳои табдил -> воқеӣ. Намунаҳои эълони тағирёбанда ва доимӣ(констант):
integer а; constant real b = 3.1415926;
integer D in [-5..5], R in [0..500] = 0;
string S = »сатр», w [30] = «сатри нав»;
Эъломияҳои истинод бо калиди калимаи ref сар мешаванд. Истинод метавонад бо номи тағирёбанда, ки қаблан эълом шуда буд, оғоз шавад. Истинод инчунин метавонад бо тағирёбандаи динамикӣ бо истифодаи амалиёти new созмон дода шавад:
ref integer F = D, t = new (31);
ref integer a = new in [0..500], b = new(1) in[0..2];
Ишораи беиттилоъ беэътибор(null) аст.
Коркунони назорат. Хеле анъанавӣ: if, switch, while, for, break. Ҳар як оператор бо аломати “;” ба итмом мерасад. Ифроти нуқта бо вергул ба итмом расидани оператор мебошад. Ҳар як оператор метавонад бо роҳи анъанавӣ нишонгузорӣ карда шавад. Синтаксиси операторҳои назоратӣ нисбат ба C ++ мувофиқтар карда шудааст. Шарти if изҳорот чунин намуд дорад:
if (шарт) { изҳоротҳо};
else { изҳоротҳо};
Қисми else шояд табиатан набошад. Шарт дар қавс ифодаи намуди булӣ аст. Сохти {операторҳо} блок номида мешавад.
Ифодаи switch чунин аст:
switch (ифода) {алтернативи-1; … алтернативи-k; };
else {изҳорот};
Ифода бояд кулли бошад. Алтернатива бо нуқта вергул иборат аст ва шакл дорад:
case <value>: {operator}
Ҳамчун <арзиш> метавонед арзиши ягонаи пурраи рақам, як қатор арзишҳоро бо вергул ҷудо карда, диапазонҳоро дар қавс қайд кунед. Қисми else иҷро карда мешаванд, агар арзиши ифодаи ҳисобшуда ба ягон арзишҳои алтернативӣ мувофиқат накунад. Қисми else метавонад нопадид шавад.
Изҳороти даврӣ синтаксиси зерин доранд:
while (шарт) {изҳоротҳо};
for (ифода-1; шарт; ифода-2) { изҳоротҳо};
Семантикаи операторон анъанавӣ мебошад. Барои баромадан аз сикл, оператори break -ро истифода кунед, ки чунин намуд дорад:
break [ишора];
Агар дар изҳороти break нишонаҳо мавҷуд набошад, пас блоки ҷорӣ бароварда мешавад.
Функсияҳо. Таърифи функсия ин аст:
method ном (параметрҳо): натиҷа
{ изҳоротҳо};
Дар натиҷа, шумо метавонед ҳама гуна навъи (аз ҷумла контейнерро) муайян кунед. Агар функсия натиҷаро барнагардонад, пас зарур нест, ки онро дар сарлавҳа зикр кунад. Функсия метавонад пайвандро баргардонад. Барои баромадан аз функсия ва баргардонидани натиҷа, оператори return истифода мешавад, ки синтаксис ва семантикаро дар C++ дорад. даъвати функсия анъанавӣ аст. Мақоми функсия блок мебошад.
Параметрҳо ҳамчун арзиш ё ҳамчун пайванд дода мешаванд. Формати як параметр ба декларатсияи тағирёбанда (пайванд) шабеҳ аст.
Муайян кардани намудҳои нави маълумот. Навъи намуди маълумот бо роҳи сохтани синф муайян карда мешавад:
class ном
{операторҳо};
Ҳамаи синфҳо ба таври пешфарз вориси синфи Object мебошад. Танаи синф як блок аст, бинобар ин, чун дар блоки муқаррарӣ, муайян кардани тағирёбандаҳо ва функсияҳо, ки майдонҳо ва усулҳо номида мешаванд, иҷозат дода мешавад. Дар муқоиса бо блоки муқаррарӣ, барои синф воситаҳои иловагӣ барои мерос истифода мешаванд. Номҳо дар блоке, ки метавонанд пинҳонӣ(private) ва ё муҳофизатшуда(protected) эълон карда шаванд. Барои дилхоҳ соҳа, метавонед методҳои get ва set дастурҳоро эълон кунед. Чунин майдонҳо хусусиятҳо номида мешаванд.
Намуди муайянкунии методҳо бо намуди эълони вазифаҳо шабеҳ аст. Ҳамаи усулҳо виртуалӣ(virtual) аст. Усулро статикӣ эълон кардан мумкин аст (чунин усул виртуалӣ нест), абстрактӣ (abstract) ё бенасл (sealed). Дар синф шумо методҳои махсусро эълон кунед:
Бинокорон(конструктор) ва вайронкунандагони(деструктор). Як конструктор метавонад статикӣ бошад.
Мероси оддии кушод иҷозат дода мешавад, принсипи ивазкунӣ қонеъ карда мешавад. Синтаксиси мерос:
class ном: номи_синфи_наслдиҳанда(базавӣ)
{операторҳо};
Шумо метавонед як синфро умумӣ, абстрактӣ ё бенасл эълон кунед.
Интерфейс иҷозат медиҳад:
Interface ном
{операторҳо};
Семантикаи таърифҳои интерфейс бо калимаҳое, ки дар C# муайян шудаанд, шабеҳ мебошанд. Ҳар як интерфейс намуди навро муайян мекунад. Татбиқи интерфейс ба синфе рост меояд, ки насли интерфейс мебошад. Меросгирии якчанд интерфейс иҷозат дода мешавад.
Блокҳо. Чӣ тавре ки дар боло қайд гардид, конструктор дар тасма блок мебошад. Ҳама номҳои дар блок нишондодашуда бо нобаёнӣ локалӣ мебошанд. Ном метавонад ба оммавӣ (public) расонида шавад — ном дар сатҳи навбатии дастрас хоҳад шуд. Тағйирёбандаҳои дар блок эълонгардида бо семантикаи анъанавӣ локалианд. Иҷозат дода мешавад, ки тағирёбандаҳои статикӣ (static) эълон карда шаванд.
Функсияҳо ҳамеша дар баъзе блокҳо эълом карда мешаванд. Ин функсия дар блок локалӣ аст ва инчунин метавонад дар сатҳи навбатии намоён эълон шавад. Азбаски функсияи бадан блок аст, функсияҳои воридшуда иҷозат дода шудаанд. Функсия дар блок, сарфи назар аз оне, ки декларатсия дода мешавад, ба ҳамаи тағйирёбандаҳои дар блок эъломшуда дастрасии номаҳдуд дорад.
Синфҳо низ дар блок эълон карда мешаванд, ва мақоми синф — блок мебошад. Синф ва интерфейсро дар сатҳи навбати эълон кардан мумкин аст.
Модулҳо ва фазоҳои номҳо. Воҳиди таркибшуда модул аст. Модул аз ҷониби сохтмон муайян карда мешавад: номи модул {операторҳо};
Чакида
Мақола оиди раванди таълими барномасозӣ бо якчанд забонҳои барномарезӣ навишта шудааст. Дар мақола истифодаи операторҳо бо намуди умумӣ нишон дада шудааст. Варианти якуми забон айни замон муайян шуда истодааст ва равишҳо барои амалисозии муҳити муттаҳидаи омӯзишӣ бо ин забони барномасозӣ таҳқиқ карда мешаванд. Аз мушкилоти ҳалнашуда муайян кардани механизми истисноҳо ва механизми ҳодисаҳо боқӣ мемонад — имкониятҳои якҷоя кардани ин механизмҳо ба механизми ягонаи коркарди рӯйдодҳо баррасӣ карда мешаванд. Имкониятҳои муайян кардани равандҳои параллелиро дар як забон дар ин ё он шакл омӯхта истодаанд.