Sin(x) = x x3 3! + x5 5! x7 7! + Мұнда х аргументі градуспен емес, радианмен өлшенеді


Line 3: Unrecognized keyword 'ende'



бет3/3
Дата05.12.2023
өлшемі41,21 Kb.
#134386
1   2   3
Line 3: Unrecognized keyword 'ende'.
Емле мәселелерінде компилятор ағылшын тілінің ең таңдаулы мұғалімін бастайды. Бағдарламаны теру, мен end кілт сөзін қате енгіздім. Компилятор маған синтаксистік қате туралы хабарлауды бәсеңдеткен жоқ. End сөзі тұрған жерде компилятор өзіне белгілі АЛГОЛа кілт сөзін көреді деп күткен.
Қатені түзетіп, компиляторды қайтадан іске қосыңыз. Бойынша дискіде орындалатын файл пайда болады — FIRST.COM CP/M-де немесе бірінші.MS-DOS-тағы EXE. Шын мәнінде, көбінесе файлды бастапқы бағдарламамен орындалатын файлға түрлендіру үшін Бір емес, екі әрекетті орындау керек, бірақ қарапайымдылық үшін бұл әдепкі. Қалай болғанда да, жасалған орындалатын файлды пәрмен жолына іске қосу үшін оның атын енгізу керек:
FIRST
Экранда сөздер пайда болады:
This is my fist ALGOL program!
Ағылшын тілін білетіндер басын шайқайды. Осы фразада да қате бар: "бірінші" сөзінде (Бірінші) жоқ r әрпі. дегенмен, компилятор оған ешқандай реакция жасаған жоқ, Ия, бұл түсінікті. Бағдарламаның міндеті экранға шығуды қамтиды берілген мәтіндік жол және компилятор, әрине, оның мазмұнын талдамайды.
Сіз print операторы бұл жағдайда белгілі бір ақпаратты экранға шығарады деп болжаған шығарсыз - мәтін жолдары. Осы тұрғыдан алғанда, жоғарыда көрсетілген АЛГОЛ бағдарламасы тараудың басында берілген ассемблер тіліндегі бағдарламаға тең. Print операторы АЛГОЛ тілінің ресми сипаттамасына кірмейді, бірақ біз біздің компиляторда тиісті компилятор бар деп есептеңіз кірістірілген функция (built-in function). Алгол операторларының көпшілігі (begin және end қоспағанда) аяқталуы керек нүктелі үтір. Print операторының алдына шегініс салу емес міндетті, бірақ жалпы шегіністер жиі қолданылады Бағдарламаның құрылымын нақтылау.
Енді екі санды көбейту үшін бағдарлама жазайық. В кез келген бағдарламалау тілінде айнымалы ұғым бар (variable). Айнымалы әріппен немесе тіркесіммен көрсетіледі әріптер, мысалы, қысқа сөзбен. Сандарды сақтау үшін жад ұяшықтары әлі де қолданылғанымен, айнымалылар оларға мекен-жайды нақты көрсетпестен қол жеткізуге мүмкіндік береді бағдарламаны түсінікті етеді. Бізге a айнымалылары қажет, b және c-екі фактор үшін және өнім үшін:
Begin
real a, b, c;
a : 535.43;
b := 289.771
c := a ´ b;
print (‘Произведение ', a, ' и ', b, ' равно ', c);
end
Нақты Оператор айнымалыларды сипаттау үшін қолданылады, яғни. олардың аттарын енгізу және түрін көрсету үшін. Бұл жағдайда A, b және c айнымалылары нақты заттарды сақтауға арналған сандар, яғни өзгермелі нүкте сандары (бүтін сандарды сипаттау үшін Алголдағы айнымалылар integer операторы ретінде қызмет етеді). Іс жүзінде барлық тілдерде айнымалы атаулар сандарды қамтуы мүмкін, бірақ әріптен бастау керек. Әдетте Бос орындар мен арнайы таңбаларды қолдануға жол берілмейді. Во көптеген компиляторлар атаудың ұзындығымен шектеледі. Мен мысалдарда бір әріптен тұратын айнымалы атауларды қолданамын.
Егер біздің Алгол компиляторы IEEE стандартын қолдаса өзгермелі нүкте сандарын сақтау үшін, үшеуінің кез келгені үшін айнымалыларға қарапайым дәлдікпен 4 байт және 8 байт қажет болады - екі еселенген.
Келесі үш өрнек тағайындау операторлары (assignment) болып табылады. Алголда оларды қос нүкте мен теңдік белгісі арқылы оңай тануға болады (басқа тілдерде тек қолданылады теңдік белгісі). Тағайындау операторының сол жағында айнымалы атау, оң жақта-өрнек. Айнымалыға есептеу нәтижесінде алынған мән беріледі өрнектер. Алғашқы екі операторда нақты сандық мәндер тағайындалады. Үшінші операторда А және В айнымалыларының көбейтіндісі с айнымалысына жазылады.
Қазіргі тілдерде символ қолданылмайды, өйткені ол ASCII және EBCDIC кодтарында жоқ. Оның орнына * таңбасы қолданылады. Алголдағы бөлу қиғаш сызықпен белгіленеді ( / ), мақсатты бөлуді білдіреді , ал ASCII кодталмаған таңба-бұл дәреже.
Айнымалылар мен тұрақтыларды көрсету үшін print операторы қолданылады. Шығару тізімінің жеке элементтері үтірмен бөлінеді. Экранда мәтінді көрсету үлкен несие емес, бірақ Қалқымалы нүкте сандық айнымалысының мәнін экранға шығарғыңыз келсе, ол автоматты түрде ASCII-ге түрлендіріледі:
Жұмыс барысы 535.43 және 289.771 тең 155152.08653
Осы жолды көрсету арқылы бағдарлама жұмысын аяқтайды және жібереді ОЖ басқару. Қалған екі санның көбейтіндісін табу үшін сізге қажет бағдарламаны өңдеңіз, оны қайта құрастырыңыз және қайта іске қосыңыз. Қайта құрастыру туралы алаңдамау үшін қоңырау шалыңыз кірістірілген read функциясы:
Begin
real a, b, c;
print ('Введите первое число: ');
read (a);
print ('Введите второе число: ');
read (b);
c := a ´ b;
print ('Произведение ', a, ' и ', b, ' равно ', c);
end
Read операторы пернетақтадан енгізілген ASCII таңбаларын оқиды және оларды өзгермелі нүкте сандарына түрлендіреді. Жоғары тілдердегі өте маңызды құрылымдық ұғым деңгей болып табылады цикл (цикл) кодтың бір бөлігін бірнеше рет орындауға мүмкіндік береді. Сіз қалайсыз делік 3, 5, 7 және 9 сандарының текшелерін есептейтін бағдарлама жазыңыз. Ол келесідей болады:

Begin
real a, b;


for a := 3, 5, 7, 9 do
begin
b := a ´ a ´ a;
print (‘Куб числа ', a, ' равен ', b);
end
end
A айнымалысына арналған операторда 3 мәні тағайындалады, содан кейін кілт сөзден кейінгі оператор орындалады do. Егер бірнеше оператор болса (біз сияқты), оларды begin және end кілт сөздерінің арасына орналастыру керек. Операторлар осы екі сөздің арасында блок (блок) деп аталады. Бірдей операторлар a 5, 7 және 9 айнымалы мәндері үшін орындалады.
For операторының басқа нұсқасы бар. Келесі бағдарлама 3 тен 99 ға дейінгі барлық тақ сандардың текшелерін есептейді:
Begin
real a, b;
for a := 3 step 2 until 99 do
begin
b := a ´ a ´ a;
print ('Куб числа ', a, ' равен ', b);
end
end
A айнымалысына арналған мәлімдемеде 3 мәні тағайындалады, содан кейін do кілт сөзінің артында операторлар блогы орындалады. Цикл келесі рет орындалған кезде айнымалы мәні қадам кілт сөзінен кейін көрсетілген мәнге артады, яғни 2. Операторлар блогы a айнымалысымен орындалады 5. Содан кейін А айнымалысының мәні тағы 2-ге артады. Циклды орындау А мәні 99-дан асқан кезде аяқталады.
Бағдарламалау тілдерінің синтаксистік ережелері әдетте ешқандай ерекшеліктерге жол бермейді. Алголда 60, мысалы, for кілт сөзінің артында тек айнымалы атау болуы мүмкін.
Бағдарламалау тілінің тағы бір маңызды элементі-белгілі бір шарт орындалған жағдайда ғана оператордың немесе операторлар блогының орындалуын ұйымдастыруға мүмкіндік беретін шартты құрылымдар. Төмендегі мысалда мыналар қолданылады квадратты есептейтін кіріктірілген sqrt Алгол функциясы тамыр. Теріс сандармен ол жұмыс істемейді, бұл бағдарламада ескеріледі.
Begin
real a, b;
print ('Введите число: ');
read (a);
if a < 0 then
print('Извините, введено отрицательное число.');
else
begin
b := sqrt(a);
print (‘Квадратный корень из ', a, ' равен ', b);
end
end
« < » Таңбасы " аз " математикалық белгісіне сәйкес келеді. Егер пайдаланушы теріс санды енгізсе, ол орындалады if құрылымындағы бірінші басып шығару операторы. Егер енгізілген Сан болса 0-ден үлкен немесе оған тең, екінші print операторы бар блок орындалады.
Осы тараудағы барлық айнымалылар осы уақытқа дейін қолданылған бір мәндерді сақтау. Бірақ бір айнымалыда олардың бірнешеуін сақтауға болады. Мұндай айнымалы массив деп аталады (array). Алголдағы бағдарламада массив келесідей сипатталады:
real array a[1:100];
Мұнда A айнымалысы элементтер деп аталатын 100 өзгермелі нүкте сандарын сақтау үшін пайдаланылуы керек массив. Массивтің бірінші элементіне сілтеме жасау үшін A[1] белгісі, екіншісіне — a[2], соңғысына қолданылады — a[100]. Жақшадағы Сан индекс (индекс) деп аталады.
Келесі бағдарлама квадрат түбірлерді есептейді барлық сандар 1-ден 100-ге дейін. Есептеу нәтижелері сақталады массив, содан кейін басып шығару.
Begin
real array a[1:100];
integer i;
for i := 1 step 1 until 100 do
a[i] := sqrt(i);
for i := 1 step 1 until 100 do
print ('Квадратный корень из ', i, ' равен ', a[i]);
end
Массивтен басқа, бағдарлама бүтін айнымалыны сипаттайды I. бірінші циклде массивтің әр элементіне тағайындалады оның индексінің квадрат түбірінің мәні. Екінші циклде массив элементтерінің мәндері басып шығарылады.
Real және integer түрлерінен басқа, Алголда Boolean түрі де бар. Бұл түрдегі айнымалылар тек қабылдай алады екі мән: шын және жалған. Логикалық айнымалылар массиві осы тарауда алгоритм арқылы жай сандар тізімін жасайтын соңғы бағдарламаны жазуға көмектеседі, Эратосфен елегі ретінде белгілі. Эратосфен (шамамен 276-196 б. з. д.) әйгілі Александрияда кітапханашы болған кітапханаға және бәрінен бұрын ұзындықты есептеумен танымал болды жердің шеңберлері.
Жай бүтін сандар деп аталады, олар қалдықсыз тек өзіне және 1-ге бөлінеді. Ең кіші жай Сан — 2. Бұл жалғыз жұп жай Сан. Келесі 3, 5, 7, 11, 13, 17 және т. б.
Эратосфен әдісінде бүтін сандар қатары қарастырылады, екіден басталады. Алдымен тізімнен сызылып тасталады барлық сандар ең кіші жай санның еселігі (2), яғни барлығы екеуінің өзінен басқа жұп сандар. Келесі ретпен жай Сан-3. Тізімнен барлық еселіктерді сызып тастаңыз оған. Үштіктің артында 4 бар, бірақ бұл сан қазірдің өзінде жойылды ол тіпті. 5-тағы да жай сан, және Біз тізімнен 5-ке бөлінетін барлық сандарды алып тастаймыз. Қалай болғанда да біз қалай алға жылжимыз, тек жай сандар ғана жойылмайды.
Бағдарламада барлық қарапайымдарды анықтау үшін Алголда 10 000-нан кіші сандар қолданылады логикалық массив, оның индексі 2-ден 10 000-ға дейінгі мәндерді қабылдайды.
Begin
Boolean array a[2:10000];
integer i, j;
for i := 2 step 1 until 10000 do
a[i] := true;
for i := 2 step 1 until 100 do
if a[i] then
for j := 2 step 1 until 10000 ¸ i do
a[j ´ j] := false;
for i := 2 step 1 until 10000 do
if a[i] then
print (i);
end
Бірінші циклде логикалық массивтің барлық элементтеріне шын мән беріледі, яғни.бастапқыда бағдарлама барлық сандар қарапайым деп санайды. Екінші циклде I айнымалысы 2-ден 100-ге дейінгі мәндерді орындайды (10000-ның квадрат түбірі). Егер I мәні жай Сан (Бұл a [i] true дегенді білдіреді), кірістірілген циклде I еселік сандары бар массивтің барлық элементтеріне жалған мәндер беріледі (бұл сандар қарапайым емес болып табылады). Соңғы циклде барлық нөмірлерді басып шығаруға болады true-ге тең массив элементтері, яғни барлық жай сандар.
Кейде бағдарламалау ғылым немесе өнер туралы пікірталастарды естуге тура келеді. Бір жағынан, сіз информатика магистрі дәрежесін алған досыңызды еске түсіріңіз, екінші жағынан, сөреде Дональд Кнуттың әйгілі "өнер" кітабы бар бағдарламалау". Физик Ричард Фейнман былай деп жазды: "Мен болар едім бағдарламалау машина жасауға ұқсас деді — бір нәрсені бірдеңе жасауға мәжбүрлеу керек".
100 адамнан басып шығару бағдарламасын жазуын сұраңыз жай сандар және сіз 100 түрлі шешім аласыз. Тіпті Эратосфеннің шешімін қолданатындар да бағдарламаны маған қарағанда басқаша жазады. ғылымда бір мәселенің дұрыс шешімдері көп болуы екіталай, ал дұрыс емес шешімдер айқынырақ болар еді. Көбінесе бағдарламалау шығармашылық түсініктермен және интуитивті шешімдермен байланысты және бұл оны өнерге жақындатады. Дегенмен, бағдарламаны жобалау және құру процесі, айталық, құрылыстан айтарлықтай ерекшеленбейді көпір.
Алғашқы бағдарламашылар негізінен ғалымдар мен инженерлер болды, олар өз міндеттерін Фортран мен Алголдың негізін қалаған математика тілінде тұжырымдай алды. Алайда бағдарламалау тілдерінің бүкіл тарихында бірнеше рет дамуға талпыныстар жасалды математикамен онша таныс емес адамдар қолдана алатын тіл.
Бизнес үшін арнайы жасалған алғашқы тілдердің бірі — КОБОЛ (COBOL) болды, 1950 жылдардың соңында өнеркәсіп пен министрлік өкілдерінен тұратын комитет құрды АҚШ қорғанысы. КОБОЛ осы күнге дейін кеңінен қолданылады. Оның атауы "Жалпы бизнес" дегенді білдіреді Oriented Language " (жалпы коммерциялық міндеттерге бағытталған тіл). Коболға қойылатын негізгі талаптардың бірі-менеджерлердің өздері бағдарламалаумен айналыспағандар, кем дегенде, оқи алады бағдарламалар және олардың не істеу керек екенін дәл орындайтынына көз жеткізіңіз (бұл іс жүзінде мүмкін емес).
КОБОЛ-да оқудың кең мүмкіндіктері бар жазбалар (records) және есептер жасау (reports). Бағдарламалаудағы жазба өзара байланысты ақпарат жинағы деп аталады. Мысалы, сақтандыру компаниясы мәліметтер базасын жүргізе алады сатылған саясат туралы ақпаратпен. Жеке элементтер бұл базада клиенттің аты-жөні, күні сақталатын жазбалар бар оның тууы және басқа ақпарат. Алдымен КОБОЛДАҒЫ бағдарламаларда ақпаратты сақтау үшін IBM 80 бағаналы перфокарталар қолданылды. Кеңістікті барынша үнемдеу үшін карталардағы жыл нөмірі көбінесе соңғы екі цифрды ғана көрсетті, бұл кейінірек ішінара әйгілі болды "2000 жылғы проблема".

Достарыңызбен бөлісу:
1   2   3




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет