Автор работы: Пользователь скрыл имя, 25 Февраля 2013 в 18:05, курсовая работа
Паскаль тiлiн 1968 - 1971 жылдары швейцариялык. ғалым Никлаус Вирт оқып - үйренуге қолайлы программалау тілі ретінде ұсынған болатын. Бұл тілдің стандарты кейiнiрек бекiтiлдi, ол сол кездері кең таралған АЛГОЛ, ФОРТРАН, БЕЙСИК тiлдерiне қарағанда жетiлдiрiлген, жұмыс iстeyгe ыңғайлы тiл болды. Паскаль тiлi өзінің қарапайымдылығының және тиiмдiлiгiнің арқасында дүние жүзіне тез таралды. Қазiргi кезде барлық дербес компьютерлер осы тілде жұмыс iстей алады. Паскаль тiлiнде жазылған программаның дұрыстығын компьютерде тексеру және жiберiлген қатенi тузету оңай.
3. Кіріспе....................................................................................................................3
3.1 Паскаль программалау тілі................................................................................ 3
3.2 Паскаль тілінің негізгі элементтері.................................................................. 4
3.2.1. Мәлімет типтері............................................................................................. 4
3.4. Паскаль тілінде программа дайындау жолдары..............................................5
3.4.1 Программа құрылымы....................................................................................5
4. Turbo Pascal - дағы енгізу және шығару операторлары .................................. 6
4.1 Сандық мәліметтерді енгізу операторы ..........................................................6
4.2 Символдық мәліметтерді енгізу операторы.....................................................7
4.3 Мәліметтерді шығару операторы ....................................................................11
5. Программаның түсінігі........................................................................................13
5.1 Алгоритмнің түсінігі..........................................................................................14
6. Қолдану ережесі...................................................................................................14
7. Программа.............................................................................................................15
8. Программаның нәтижесі..................................................................................... 15
9. Delphі қосымшаларымен жұмыс істеу үлгілері................................................16
9.1. QuіckReport компоненттері..............................................................................16
9.2. Delphі-дегі файлдық қолдау.............................................................................16
9.3Object Pascal тілі және файлдары......................................................................17
9.4. Текстік файлдарды өңдеу.................................................................................17
Қорытынды ..............................................................................................................22
Қолданылған әдебиеттер...................................................................................... ...23
Қосымша....................................................................................................................24
var
І: real;
J: integer;
К: cҺar;
begin
Read (І, J, К);
...
Программаға мынадай бастапқы мәндер
енгізіледі 212.5 38 ‘п’. Осыдан кейінгі
келесі мәндер енгізілсін: 'л' 121.35 25.
Алғашқы нұсқасында мәлімет енгізу дұрыс
орындалады, өйткені енгізілетін мәндер
өз ретімен орналасқан айнымалылар типтеріне
(І, J. К) сәйкес келіп тұр. Екінші нұсқа
коды 10 болып келетін қате бар екенін айтады,
себебі real типтес 1 айнымалысы үшін char
типіндегі мән енгізіліп отыр.
Егер енгізу пернетақта арқылы емес, дискіден
немесе файлдан жүзеге асырылса, онда
жақша ішіне алдымен файл аты жазылады.
READ (FN, аl, а2 ... ап);
READLN (FN, аl, а2, ... , ап);
READLN (FN);
Мұндағы FN - енігізілетін мәндер жазылған дискідегі файлдың аты; а1- айнымалылар идентификаторлары, файлдарда да мәндер бір қатардан немесе келесі қатардан оқыла береді, сол себепті мұнда да жоғарыда көрсетілген операторлардың үш түрі қолданылады. Файлдағы мәліметтер де бір-бірінен «бос орын» немесе «енгізу» пернесін басу арқылы бөлінуі тиіс, яғни файлға енгізілгеннен кейін «_», ал енгізу соңында «Enter» пернесі басылады.Файлдардан мәлімет енгізу мысалдары кейінірек қарастырылады. READ операторы кез келген сандармен, символдармен және сөз тіркестерімен жұмыс атқара алады. Сонымен, параметрлердің сандық мәндері бір - бірінен бос орын арқылы ажыратылып жазылады. Мәндерді беріп болдық дегенді білдіру үшін Enter (енгізу) пернесі басылады. Мысалы, енгізу операторы READ (А,В,С); түрінде берілсе, парметрлерге мәндер былай беріледі: 5 _ 6.2 _ 4.5 Enter. Бұл жағдайда А=5, В=6.2, С=4.5 мәндер қабылдайды. Осы мәндер арқылы программа орындалып болған соң, басқа мәндер үшін программаны қайталау қажет болса, онда программа басынан бастап қайта орындау қажет. Бүтін айнымалыларға бүтін, нақты айнымалыларға нақты мәндер берілуі қажет. Айнымалы сипатталғанда нақты ретінде көрсетілсе, оған нақты да, бүтін де мән беруге болады, себебі нақты сан құрамына бүтін сан енеді. Ал машина «өзі» бүтін санды нақты сан түріне келтіріп алады.
Мысалы:
VAR
А, В: REAL;
BEGIN
READ (А, В);
...
END.
түрінде беріліп А,В айнымалылары үшін 4 5 Enter орындалса, онда машина оларды
А= 4.0, В=5.0 түрінде қабылдайды.Сандар арасында бір немесе бірнеше бос орын қалдыруға болады, себебі сан енгізілгенде бос орын есепке алынбайды.Мәндерді енгізгенде мән енгізілген жолдан келесі жаңа жолға өту үшін параметрсіз немесе параметрге сәйкес READLN; READLN (аl, а2, ... ,аn); операторларын пайдалану қажет. Сонымен, READ (аl, а2,...,an); READLN; операторларының орнына бір ғана READLN (аl, а2,...,an) операторын пайдалануға болады.
4.2 Символдық мәліметтерді енгізу операторы.
Символдық деректерді пернетақтадан
енгізу READ (READLN) операторы арқылы жүргізіледі,
оларды енгізудің төмендегідей ерекшеліктері
бар.
1. Бос орын таңбасы - '_' Паскаль тілінде
символ орнына жүретіндіктен,
символдық айнымалылардың мәндері (символдар)
бос орынсыз жазылады.
2. Бір айнымалыға бір ғана символ меншіктеледі.
Мысал ретінде төмендегі
программа үзіндісін қарастырайық:
......................
VAR А, В, С: CHAR;
.......................
READ (А, В, С);
.......................
Бұл мысалдағы READ операторы орындаларда пернетақтадан мынадай мәндер SNR енгізсек, онда айнымалылар өз орындарына сәйкес: A='S', B='N', C='R' мәндерін қабылдайды. Егер мәндерді S_N_R түрінде берсек, онда айнымалылар орындарына сәйкес A='S', В='_', С=' N' мәндерін қабылдайды да, соңғы екі таңба ешқайда енгізілмейді.
3. Символдық айнымалыларды
енгізудің тағы бір ерекшелігі -
тек Eпter
пернесі басылса да, оны READ операторы бос
орын символы ретіндe қабылдайды. Мысалы,
айнымалыларға: А=3, В=4, C='W', D='F' ,мәндерін
меншіктеп, оны экранға шығару қажет болса,
онда оған мынадай программа жазу керек:
VARA, В: INTEGER;
С, D: CНAR;
BEGIN
WRlTELN (' А, В, С, D мәндерін енгізіндер :');
READ (А, В);
READ (С, D);
WRlTELN (А, В, С, D);
END.
Бұл программа орындалу кезінде пернетақтадан
мынадай мәндер енгізілген болса:
3 4
WF
онда А = 3, В = 4, С=' " D = 'W'
болады, себебі 4 санынан соң басылған
Enter пернесі бос символ ретінде
меншіктеледі де, соңғы F символы ешқайда
енгізілмейді. Программадағы айнымалылар
мәнді дұрыс қабылдауы үшін екі
оператордың арасына
READ (А, В);
READLN;
READ (С, D);
Осылай жазылған уш оператор А = 3, В = 4, С = ' W " D = 'Р' мәндерін дұрыс меншіктеуді қамтамасыз етеді. Символдарды енгізу операторының алдына міндетті турде READLN операторын қою қажет. Егер жоғарыдағы программа үзіндісін десимволдарды енгізу операторын (READ (С. D);) 1- орынға шығарсақ та, оның алдына READLN операторын қою қажет, яғни айтылған ерекшелікке байланысты жоғарыдағы жолдарды былай да жазуға болады:
READLN;
READ (С, D);
READ (А, В);
Программада сандық және символдық
мән қабылдайтын айнымалылар
үшін екі рет енгізу операторын жазудың
да қажеті жоқ. Жоғарыдағы екі оператор
орнына READ (А, В, С, D) операторын ғана жазуға
болады. Егер READ (А, В, С, D) операторын орындауда
айнымалыларға мәнді былай берсек:
4531 KN онда дисплей экранында 4531К көрінеді,
демек А = 45, В = 31, С= ‘_’, D= 'К' болғаны, ал
егер мәндер былай берілсе:45 31 К N
Онда дисплейден 4531KN көрінеді, яғни осылай
береді.
Readln операторы көмегімен пернетақтадан
бір символ енгізіп оны экранның келесі
қатарына қайта шығаруды орындайтын testread
программасының мәтіні төменде келтірілген.
var сҺ: cҺar;
begin
writeln ('Символ енгізіндер: ');
writeln (сҺ,' символы енгізілді ');
write ('Enter пернесін басыңдар'); readln
end.
Егер осы программаның
'Символ енгізіндер:' деген хабарламасынан
кейін бір символ пернесін басып, оны босатпасақ,
онда сол басылған символ бейнесі экранға
127 рет шығады да, одан кейін тек тырсылдаған
дыбыс қана естіледі. Бұл 127 символ сақтай
алатын пернетақта буферінің енгізілген
таңбалармен толып қалғанын көрсетеді.
Негізінде, перне басылғанда бірден екі
код қалыптасады, оның алғашқысы символ
коды, ал екіншісі - кеңейтілу немесе сканерлеу
коды. Алфавиттік-цифрлық перне басылғанда,
олардың символ коды пайдаланылады. Ал
кеңейтілу коды басқару пернелері (Ctrl,
SҺift, Caps Lock, , , , , F1, F 2 т.б.) үшін өте маңызды.
Бұлардың символ коды нөлге тең болып
саналады да, программаларда олардың тек
сканерлеу коды пайдаланылады. Скарнерлеу
кодын пайдалану Турбо Паскаль программасының
CRT модулінін Read Кеу функциясы арқылы жүзеге
асырылады. Символ енгізу кезінде бұл
Функция курсорды келесі орынға жылжытпай,
ол орынға кез келген символ бейнесін
шығара алады. Келесі testread2 программасы
Read Кеу функциясын пайдаланып, кіші латын
әріптерін бас әріптерге түрлендіреді.
Uses CRT;
Var сҺ: cҺar;
Begin
Writeln ('Латын алфавитінің кіші әріптерін
енгізіңдер (z-программадан шығу). ');
Repeat
сҺ := Read Кеу;
write (Up Case( сҺ));
until сҺ ='z",
end.
Төмендегі кесте басқару пернелерің
немесе олардың комбинацияларының
сканерлеу коды берілген.
Басылған пернелер
Сканерлеу коды Басылған пернелер Сканерлеу
коды
Ctrl+@Ctrl+3
SҺift+Tab
Alt+ 1..Alt+=
Alt+Q ..Alt+P
Alt+A ..Alt+L
Alt+Z ..Alt+M
Alt+Enter
Ноте
Ctrl+Home
Ctrl+PgUp
End
3
15
120..131
16..25
30..38
44..50
28
71
119
132
77
79
80 PgDn
lns
Del
Fl ..FI0
SҺift+F 1..SҺift+F 10
Ctr1+Fl ..Ctrl+Fl0
Alt+F 1..Alt+F 10
Ctrl+PrintScreen
PgUp
75
Ctrl+
Ctr1+End
Ctrl+PgDn 81
82
83
59..68
84..93
94 ..103
О 104..113
114
73
Ctrl+ 115
116
117
118
Төмендегі scan_codes программасы
басылған пернелердың сканерлеу кодын
анықтауға арналған. Ол программамен жұмыс
істеу барысында Сtгl + PrtSс (принтерге экрандағы
мәліметті шығару) немесе Ctr1+Alt+Del (ДОС-ты•
қайта жүктеу) пернелер комбинациясын
басу керек емес, ал Ctr1+Break пернелерін басу
программа жұмысын тоқтатады.
Uses CRT;
Var сҺ: char;
Begin
Writeln ('Программа символ коды мен сканерлеу
кодын анықтайды');
Wrіtеlп('Программа жұмысын тоқтату үшін
Ctrl+Break пернелерін басыңдар');
repeat
wrіtеlп('Келесі перне: ');
сҺ: = Read Кеу;
writeln;
if cs #0 then
writeln ('Символдық перне. Огd (сҺ) = " Ord(ch))
else
begin
write (Басқару пернесі, символ коды: #0. ' );
сҺ : = Read Кеу;
writeln ('Сканерлеу коды: " Огd(сҺ));
end•,
until false;
end.
Бұл программа кейбір пернелерді
басқанда, мысалы, F11 пернесін басқанда
еш нәрсе істемейді. Оның символдық және
сканерлеу коды болғанмен, Паскаль қолданатын
DOS жүйесі компьютер пернелерінің кеңейтілмеген
ескі нұcқaсын пайдаланатындықтан (онда
F11 болмаған), программа осындай нәтиже
береді.
4. Символдық және сандық мәндерді енгізгенде,
көбінесе EOLN (еnd of linе - жол соңы) стандартты
функциясын пайдалану қолайлы болады.
Бұл Функция мәні "жолдың соңы болды
" немесе "мәндер беріліп болды"
дегенді білдіретін Enter пернесі басылғанда
ғана ақиқат (TRUE) болады да,қалған жайғдайлардың
барлығында жалған (FALSE) болады. Бұл Функция
көбінесе циклдік операторларда пайдаланылады.
4.3 Мәліметтерді шығару операторы.
Паскаль тілінде нәтижені экранға
шығару үшін WRITE (жазу) операторы (процедурасы
деп те айтылады) қолданылады:WRІTE (аl, а2,
... ,an);
Мұндағы жақша ішінде жай айнымалылар
немесе апострофтармен қоршалған символдар
тобы болуы мүмкін. Мысалы, егер B=17.15. болып,
мына команда орындалғанда:
WRlTE ('В мәні=', В);
экранда
В мәні = 1.715Е+Оl
деген сөз тіркесі көрінеді.
Шығарлатын мәндердің түрі
айнымалылардың типі арқылы анықталады,
олар iпteger, real, Вооlеап (true, false), char, striпg
сияқты типтер түрінде беріле береді.
Шығарылатын параметрлер бір-бірімен
үтір арқылы ажыратылыn, WRITE түйінді сөзінен
соң жай жақша ішіне жазылады.
Шығару операторында жақша ішінде қағазға
немесе экранға шығарлатын мәнінің пішімін-
оның алатын орнын, яғни енін толық көрсетуге
болады. Бүтін санды оның енін көрсете
отырып экранға шығаруға болады, мысалы:
b айнымалысының бүтін түрдегі мәнін көрсету
WRITE (b: n) немесе WRITE (b: 5)
операторы арқылы жүзеге асырылады. Мұндағы
b - айнымалының атауы: n - мәні бүтін сан
болып келетін тұрақты түрінде берілген
орын саны, оны бірден бүтін санмен де
жазуға болады. Егер b: 5 пішімі беріліп,
ал b =56 ( екі немесе үш разрядты сан) болса,
онда беске дейінгі толтырылмаған орындарға
сол жақ шетте бос орын қалдырылады. В
= 56 мәні үшін WRІTE (b: 5) операторы экранға
«56» тіркесін шығарады.
Нақты сандар ушін оның жалпы енін, сонан
соң бөлшегі алатын орынды көрсету қажет,
сол себепті аралас сандарды бейнелеуде
оның ені қос нүктемен бөлінген екі бүтін
сан арқылы жазылады. Сонымең нақты сан
үшін пішім екі саннан тұрады:
І- санға берілетін барлық орын.
ІІ- үтірден кейін алынатын бөлшек цифрлар
саны.
Мынадай оператор берілсін делік: WRІTE
(Ү: 5: 2)
Мұндағы 5 - нәтижеге берілген барлық орын,
2 үтіпден соңғы бөлшек бөлігіне берілетін
орындар саны. Мысалы, С= - 145.7865 болғанда
WRITE (С: 8: 3) операторы экранға - 145.786 мәнін
шығарады, мұндағы жалпы орындар саны
- 8, ал бөлшек үш санмен бейнеленетіндіктен
соңғы бір цифр жазылмай қалып отыр. С
айнымалысының берілген мәнін толық бейнелеу
үшін WRITE (С: 9: 4) операторын жазу керек еді.
Жалпы нақты санды экранда бейнелеу операторының
жазылу түрі:WRITE (С: п: т);
мұндағы n - С мәнінің барлығына берілген
орын саны; m - С мәнінің бөлшек бөлігіне
белгіленген орын саны. n - нің мәні таңбаны,
бүтін мен бөлшекті бөлетін нүктені және
бүтін сандар орнын бөлшек қосып көрсететіндіктен,
ол n > m +3 болуы тиіс. Экранға шығаратын
сандардың арасында қалдырылатын бос
орын санын да осы жолмен көрсетуге болады.
Ол үшін екі апостроф жазып, одан кейін
қос нүктемен бөлінген бүтін сан арқылы
қалдырылатын бос орындар санын өрнектейміз,
мысалы:
WRITE (b: 8: 3,":4, с: 12: 4);мұндағы 4 - b мен с сандарының
арасындағы бос орын саны. Егер нақты сан
үшін: WRIТЕ ('Ү =', Ү: 8: 3) пішімі берілсе, ал
оның мәні Ү=1.76 болса, экраннан Ү=1.760 тіркесі
көрінеді. Егер операторда пішім көрсетілмесе,
онда нәтuжеде сол сан экспоненциальды
түрде экранға шығады.Паскаль тілінде
параметрсіз шығару операторы WRITELN жаңа
жолға өту үшін қолданылады. Егер WRITELN
(аl, а2, ...,an); операторы қолданылса, онда
аl, а2, ... ,аn. мәндерін экранға шығарған
соң курсор келесі жолға көшеді.
WRITE операторын түсініктеме
беруге қолдануға болады. Мысалы:
WRITE (' А, В, С мәндерін енгізіндер: ');
READ (А, В, С);
Мұндайда экранға:
А, В, С мәндерін енігізіндер:
түсініктеме сөзі шығады, сонан кейін
үш сандық мән енгізілуі тиіс.
Мысалы,
WRITE (' Т = ' , N: 3,": 4, ,М = ' , М: 4: 2)
болса, онда Т-ның үш орынды мәнінен соң
4 бос орын қалады да, одан соң М-нің нақты
мәні жазылады.
Айталық, х= 7, ү= 15, Z= 11, ал R= 450,08 болсын, оларды
экранға
шығарудың әр түрш тәсілдерін мына кестеде
көрсетілген.Оператордың жазылуы Экрандағы
нәтижесі
Write (х, у);
Write (Х'_,_' ,у);
Write ('Х =',Х);
Write (Х, ": 3, Z);
Write (Х+Ү =',Х+Ү);
Write (Z,'- соңы);
Write ('бітті');
Write (R); 7 15
7_,_ 15
Х=7
7 11
Х+Ү=22
ІІ-соңы
бітті
4.5008Е+02
5. Программаның түсінігі.
5.1 Алгоритмнің түсінігі.
Бұл программада енпзу - шығару
операторларына блок – схема құрылған.
Бұл блок - схемада n таңбасын студенттер
санына өзгертеміз. With - оператор көмегімен
студенттердің аты жөнін; тобын, туғaн
жылын және әрбір пән бойынша алған бағаларын
енгіземіз. Fоr оператор көмегімен студентердің
әрбір пән бойынша алған бағаларының орташа
бағасын есептейміз және олардың жауабын
шығарамыз.
6. Қолдану ережесі.
Программаны іске қосыңыздар.
Программа А:\ Student. ехе орналасқан.
Сіздің алдыңыздан меню терезесі көрінеді.
Көрінген меню терезесінен керек жолды
таңдап алып, (бағыттаушылар жоғары, төмен)
таңдауды растау үшін "Enter" пернесін
басыңыз. Егер сіз «Программа туралы»
жолды таңдасаңыз, онда сіз Авторы кім
екенін және программа аты туралы ақпарат
көресіз. Жалғастыру үшін "Enter" пернесін
басыңыз.Егер сіз "Енгізу" жолын тандасаныз,
онда алдыңыздан "Turbo Pascаl - дағы енгізу
және шығару операторлар программасы"
- на хабарлама шығады. Студенттердің санның
енгізіңіз, "Enter" пернесін басыңыз,
содан соң студенттердің аты - жөнің енгізіңіз,
"Enter" пернесін басыңыз, сонан кейін
олардың тобын енгізіңіз, "Enter" пернесін
басыңыз және туған жылын енгізіңіз, "Enter"
пернесін басыңыз,осылардан кейін студенттердің
әрбір пән бойынша алған бағаларын енгізіңіз,
"Enter" пернесін басқаннан кейін бастапқы
меню терезесіне шығасыз. Енгізілетін
мәндерді енгізіп болғаннан кейін «Жауабы»
жолын таңдасаңыз экранға программа нәтижесі
шығады.
«Шығу» жолын тандасаңыз программадан
шығасыз .
7. Программа.
{Приложение А. Листинг модуля
Student.pas}
{О каждом студенте известна следующая
информация
~ Ф.и.о.
~ Год рождения
~ Группа
~ Оценка по математики
~ Оценка по истори
~ Оценка по в.т.
~ Оценка по статистики
Сформируйте таблицу, записав в нее всю
известную о қаждом студенте и его средний
балл. Подсчитайте средний балл по каждому
предмету выведите таблицу на экран дисплея
в алфотвитном порядке.}
{Автор: Бақтығалиев Бекнұр}
{Подключения модуля CRT.}
Uses CRT;
{Описания записи о каждом студенте. }
type
tablica=record
паmе: string[15];
group: string[6];
god: integer;
vt, history, stat, math: byte;
sr bal:real;
end;
var
i,j, n:integer;a:tablica;
{Таблица- массив записей.}
mas: array [1 .. 30] of tablica;
{Переменные для сравнение средних значении
пo предметам. }
s vt, s history, s stat, s math: real;
begin
{Bвод количества n записи.}
write('n='); readln(n);
{Ввод элементов в массив записей.}
for і:=l to n do
with mas [і] do
begin
writeln (' і=', і: 4);
writeln ('FIO');
readln (nаmе);
writeln('GROUP') ;
readln (group);
writeln ('Year');
readln (god);
writeln ('Otsenki');
readln(vt,history,stat,math);
sr_bal:=(vt+history+stat+math)
end;
{Вычисление средних значении по каждому
предмету. }
s vt:=0; s history:=0; s stat:=0; s math:=0;
for і:=l to n do
begin
s vt:=s vt+mas[i] .vt;
s history:=s history+mas[i] .history;
s stat:=s stat+mas[i] .stat;
s -math:=s -math+mas[i] .math;
end;
s vt:=s vt/n;
s history:=s history/n;
s stat:=s stat/n;
s math:=s math/n;
{Упорядочение массива записей в алфавитном
порядке фамилии.}
for і:=l to п-l do
for j:=l to п-l do
if mas[j] .name>mas[j+l] .пате then
begin a:=mas[j];
та s [j ] :=та s [j +1] ;
mas[j+l] :=а;
end;
{Вывод результатов.}
clrscr;
write(' ':8,'FIO , , .. 4) .,•
wr і te (' ': 2, 'GROUP ');
write(' ':l,'Year ',":2);
write (": 3, 'OTSENKI', '
writeln('Sr.Bal') ;
for і:=l to n do
with rnas[i] do
begin
write(narne:15);
write (' ',group: 8);
write(' ',god:4);
-- _. о. _
writeln(' ',vt:з,' ',history:3,' ',stat:3,’math : 3,' ', sr_bаl
: 5 : 2) ;
end;
writeln (' , ' Sr. bа1: ' " ': 24, s_vt: 3 : 1, ' ',s_history:3:1,
, ',s_stat:3:1, S rnath:3:1);
end.