|
|
ФФСО ПГУ 7.18.2/05
|
Қазақстан Республикасы Білім және ғылым министрлігі
С. Торайғыров атындағы Павлодар мемлекеттік университеті
Физика, математика және ақпараттық технологиялар факультеті
Информатика және ақпараттық жүйелер кафедрасы
050604 Физика мамандығының студенттеріне арналған
" ПРОГРАММАЛАУ" пәні бойынша
зертханалық жұмыстарды орындауға арналған
ӘДІСТЕМЕЛІК НҰСҚАУЛАР
Павлодар
|
|
ФФСО ПГУ 7.18.2/05
|
БЕКІТЕМІН
ФМжАТ факультетінің деканы
___________ С.К.Тлеукенов
200 __ ж. «___»____________
Құрастырушы: Аға оқытушы Нұрғазина Б.Қ.
Информатика және ақпараттық жүйелер кафедрасы
050604 - «Физика» мамандығының студенттері үшін
"Программалау" пәні бойынша зертханалық жұмыстарға әдістемелік нұсқаулар
Кафедра мәжілісінде бекітілді, 200__ж. «___»____________ Хаттама №_____.
Кафедра меңгерушісі _________________________ Нұрбекова Ж.Қ.
Факультеттің әдістемелік кеңесінде құпталды,
200__ж. «___»____________ Хаттама №_____.
ӘК төрайымы _________________________ А.Т.Кишубаева
Зертханалық жұмыстардың мақсаты:
1. Студенттерге бағдарламалау тілінің негізгі құрылымдарын үйрету, коман-далар мен операторлардың қызметі мен пайдалану ережелерімен таныстыру.
2. Студенттердің алгоритмдік ойлау дағдыларын қалыптасытру.
3. Өз бетімен оқып-үйренуге, талдауға, бағдарлама бойынша нәтижені анықтауға үйрету.
4. Есепке алгоритмдер мен бағдарламалар құру, олардың тиімділерін таңдау және нәтижелерге талдау жасау әдістерін меңгерту.
Зертханалық жұмыстардың тәртібі:
1. Жұмыстың теориялық бөлігімен танысады.
2. Берілген есептің алгоритмімен танысады.
3. Бағдарлама тексін қарап, оның құрылымына талдау жасайды. Ондағы командалардың пайдаланылуын негіздейді.
4. Алгоритмнің орындалу тәртібін ауызша түсіндіреді.
5. Қандай да бір мәндермен, бағдарламаның орындалу протоколын толтырып, нәтижелерді компьютерсіз анықтайды. Пайдаланылатын мәндер бағдарламадағы барлық жағдайларды қамту қажет.
6. Бағдарламаны компьютерде орындап, 5-пунктте анықталған нәтижелердің дұрыстығын тексереді.
№1 зертханалық жұмыс. Алгоритм ұғымы
Алгоритм – дегеніміз алға қойылған мақсатқа жету немесе берілген есепті шешу бағытында орындаушыға (адам, ЭЕМ, робот, автомат) біртіндеп қандай әрекеттер жасау керектігін түсінікті түрде әрі дәл көрсететін нұсқаулар тізбегі.
Алгоритмдер құрылымы үш түрге бөлінеді:
1) сызықтық құрылым;
2) тармақталған құрылым;
3) қайталанушы құрылым.
Сызықтық алгоритмдік құрылым
Алгоритмнің командалары тізбектей, жазылу реті бойынша бірінен соң бірі орындалады. Әдетте формула бойынша есептеуде қолданылады. Формуладағы айнымалының мәнге ие болуы немесе мәнiнiң өзгеруi меншiктеу командасымен (:=) жүзеге асырылады.
Меншiктеу командасының жазылу түрі:
Айнымалы := өрнек ; Айнымалы :=мән;
1 мысал. А айнымалысына 10 мәні меншіктелсін. а:= 2*а – 1 меншіктеу командасы орындалған соң А айнымалысы қандай мән қабылдайды?
Шешуі: а:=10; а:=2*10-1; а:=19; Меншіктеу командасы орындалған соң а айнымалысы 19 мәніне ие болады.
2 мысал. х:=3 және у:=7 айнымалыларының мәндерін ауыстыру қажет.
Шешуі. Алгоритмде х және у мәндерін уақытша сақтау үшін қосымша z айнымалысы қажет.
Алгоритм меншіктеу командаларының тізбегінен тұрады:
х:=3; у:=7; z:=х; х:=у; у:=z
Орындалуы: х:=3; y:=7; z:=3; х:=7; y:=3;
3 мысал. х және y айнымалыларының мәндерін қосымша айнымалыны қолданбай ауыстыру қажет.
Шешімі. Алгоритм меншіктеу командаларының тізбегінен тұрады: х:=3; х:=7; х:=х-y; y:= х+y; х:=y-x
Орындалуы: х:=3; y:=7; х:=3-7; х:=-4;
y:=-4+7; y:=3; х:=3-(-4); х:=7;
Тармақталған алгоритмдік құрылым
Кейбір жағдайларда орындалатын әрекеттер белгілі бір шартқа байланысты болады. Шарт логикалық блокта тексеріледі. Егер шарт орындалса, әрекеттердің бір бір тармағы, әйтпесе екінші тармағы орындалады. Шарт дұрыс болмаса ешқандай әрекеттер орындалмауы да мүмкін.
Толық түрі
егер <шарт>
онда <1 серия >
әйтпесе <2 сери >;
бітті
|
Қысқаша түрі
егер <шарт>
онда <1 серия >
бітті
|
4 мысал. Екi санның үлкенiн табу.
Есепті шығару алгоритмі
басы
енгізу х,у
егер х>у
иә
жоқ
онда z:=x
әйтпесе z:=y
б
z:=x;
z:=y;
ітті
шығару z
соңы
Алгоритмнің циклдік құрылымы
Циклдік алгоритмдік құрылымның үш түрі бар: параметрлі цикл (үшін), кейінгі шартты цикл (дейін), алғы шартты цикл (әзірше) (3 сурет).
Егер алгоритмде қайталану саны алдын ала белгілі үрдісті ұйымдастыру қажет болса, онда параметрлі цикл (үшін) қолданылады. Ондай алгоритмде цикл параметрінің бастапқы мәні, соңғы мәні және өзгеру қадамы алдын ала айқын болады.
Егер алгоритмде қайталану саны алдын ала белгісіз болса, онда кейінгі шартты цикл немесе алдыңғы шартты цикл қолданылады. Бұл циклдерде қайталану шарты басқарылуы қажет. Әйтпесе қайталану тоқтамай цикл шексіз орындала береді.
6 мысал. Екi санның ең үлкен ортақ бөлгішін табу (Евклид алгоритмі).
Есепті шығару алгоритмі 4 суретте көрсетілген.
басы
енгізу А,В
әзір А ≠В
цб
егер А > В
онда А := А-В
әйтпесе В := В-А
бітті
цс
шығару А
соңы
4 сурет – Евклид алгоритмінің блок-схемасы
і үшін n1 бастап n2
дейін қадам h
цб
цикл денесі
цс
|
цб
цикл денесі
цс
дейін шарт
|
әзір шарт
цб
цикл денесі
цс
|
№1 зертханалық жұмыс. Паскаль ортасы. Бағдарламаның құрылымы.
Мақсаты: Рascal-дың жұмыс ортасымен танысу, негізгі дағдыларын қалыптастыру.
Теориялық бөлім
1.Паскаль тiлiн жұмысқа қосу. Жұмыс столындағы Паскальға сәйкес жарлық жұмысқа қосылады.
2. Менюмен жұмыс. F10 клавишасы менюдi жұмысқа қосады. Меню жұмысқа қосылған соң, ерекше түске боялады. Команданы жұмысқа қосуды тездетуге болады. Ол үшiн меню жолындағы белгiленген әрiпке сәйкес клавиша басылады. Alt клавишасы мен белгiленген әрiптi басса, оған сәйкес команда iске қосылады. Менюден шығу үшiн Ecs клавишасы басылады.
Меню пункттеріне сипаттама
1. File
Open-кеңейтілуі .pas файлды ашады.
New-жаңа терезе ашады.
Save (F2)-файлды өз атымен сол орнына сақтайды.
Save as-файлды басқа атпен, басқа каталогқа жазуға болады.
Change dir- ағымдағы (жұмыс істеп отырған) каталогты өзгертуге мүмкіндік береді.
Print-ағымдағы терезедегі ақпаратты принтерге шығарады.
Printer Setup-принтер орнату.
DOS shell- DOS режиміне шығады. ехіt командасымен Паскаль ортасына оралады.
Exit (Alt-X)-Паскальмен жұмысты аяқтайды. Файлды сақтау қажет.
Терезелермен жұмыс iстеу. Терезе дегенiмiз - бiздiң барлық iс-әрекетiмiздi жүзеге асыратын экранның бөлiгi. Оның размерiн өзгертуге, орнын ауыстыруға, ашуға, жабуға болады. Паскаль ортасында бiрнеше терезенi қатар ашуға, әрбiреуiмен жеке жұмыс жасауға, олардың арасында информация алмастыруға болады. Жұмыс iстеп отырған терезе белсендi (активтi) деп аталады. Белсендi терезе қос рамкалы және онда жабу кнопкасы, масштабтау кнопкасы, терезенi жылжыту кнопкасы, терезенiң өлшемiн өзгерту бұрышы болады.
Меню- WINDOW
Tile-терезелерді ретпен орналастыру.
Cascade-терезелерді каскадпен орналастыру.
Close all-барлық терезелерді жабу.
Size/Move-терезенің өлшемін өзгерту (Shift+стрелкалар).
Zoom-терезені үлкейту немесе кішірейту.
Next - терезелерді ретпен қарау.
Close (Alt + F3)-белсенді терезені жабу.
Previous- терезелерді кері ретпен қарау.
List-барлық ашық терезелер тізімін көрсетеді.
Alt + № - № номерлi терезеге өту. Alt клавишасы мен керек терезенiң номерi қатар басылады.
Alt + F5 - Window/ User Screen - Бағдарламаны орындау нәтижесi бар пайдаланушы терезесі шығады
Тапсырма.
1.Паскальді жұмысқа қос.
2. Паскаль ортасында 5 терезе ашып, әрбіреуін сәйкесінше tereze1, tereze2, tereze3, tereze4, tereze5 деген атпен сақта.
3. Терезелерді ретпен орналастыр.
4. Терезелерді каскадпен орналастыр да, мына ақпаратты тер.
1-терезеге: {фамилияң мен атыңды}
2-терезеге: program p_orta;
const k=100;
3-терезеге: label m1,m2;
Begin clrscr; writeln(‘Salem!’); writeln(‘ Men Pascalmyn!’);
end.
4-терезеге: uses crt;
Осы ақпараттарды терген соң, әрбір терезені сақта.
5. Терезелерді ретімен, одан соң кері ретпен қарап, жазылған ақпаратты тексер.
6. 2-терезеге өтіп, мына жазуды қосып, сақта.
type kun=1..31;
7. Барлық ашық терезелердің тізімін шығар. 4-терезеге өтіп, мына жазуды қосып, сақта.
var k:kun; a:byte;
8. 1 және 2-терезелер экранға қатар сиятындай етіп, өлшемдерін өзгерт.
2. Меню-EDIT
Undo (Alt+BkSp)- алдыңғы әрекетті жояды.
Redo – Undoдағы әрекетті қайтарады.
Cut (Shift+Del) –белгіленген фрагментті жойып, буферге алады.
Copy (Ctrl+Ins) - белгіленген фрагментті буферге көшіреді.
Paste (Shift+Ins) – буфердегі фрагментті курсордың орнына қояды.
Clear (Ctrl+Del) – фрагментті жояды.
Show Clipboard- буфердегі ақпаратты көрсетеді.
Тапсырма.
9. 1,2,3,4 терезелердегі ақпараттарды ретімен 5-терезеге біріктіріп, мына тексті құрастыр.
{фамилияң мен атың}
program p_orta;
const k=100;
label m1,m2;
begin
clrscr;
writeln(‘Salem!’); writeln(‘ Men Pascalmyn!’);
end.
uses crt;
Тексті сол атымен сақта.
3.Меню- SEARCH-текст фрагментін және қате табылған орынды іздейді.
4. Меню-RUN
RUN (Ctrl+F9)– бағдарламаны орындайды.
5. Меню- COMPILE
Compile – белсенді терезедегі файлды компиляциялайды.
Make – негізгі бағдарламаға кіретін модульдер қайтадан компиляцияланадыда, орындалушы файлға біріктіріледі.
Build –алдыңғы пунктке ұқсайды.
Distination memory –орындалушы файл қайда орналасады, дискіде ме, әлде жадыда ма?
Primary file –компиляциялау қай файлдан басталатынын көрсетеді.
6. TOOLS – бағдарламаны жұмысқа қосу
7. OPTIONS –Паскаль ортасына қажетті каталогтардың жолы көрсетіледі.
Бағдарламаны компиляциялау. Бағдарламаны компиляциялау үшiн Alt+F9 клавишалары қатар басылады. Егер текст дұрыс болса, ол жөнiнде хабарлама шығады: Compile Successful: Pres any key
Жұмысты жалғастыру үшiн, кез келген клавишаны басу керек.
Бағдарламаны орындау. Бағдарламаны орындау үшiн, Ctrl+F9 клавишасы басылады, немесе менюден /Run/ Run енгiзiледi.
Тапсырма. 5-терезедегі бағдарламаны орында. Қате туралы хабарлама шықса, төмендегі құрылым бойынша бағдарламаны түзет. Uses бөлімін орнына келтір.
Паскаль тiлiндегi программаның құрылымы
program < идентификатор >; - программаның аты
uses < идентификатор >; - библиотекалық модульдер тiзiмi
label . . . белгілерді сипаттау.
const . . . тұрақтыларды сипаттау.
type . . . типтердi сипаттау.
var . . . айнымалыларды сипаттау.
begin
операторлар программа денесi
еnd.
Бағдарламаны орындап, пайдаланушы терезесінен нәтижені қара.
Орындалушы (кеңейтiлуi .exe) файл жасау. Паскаль тiлiндегi бағдарлама тексiн сақтағанда стандартты .pas деген кеңейтiлу (расширение) берiледi. Бағдарламаны орындалушы файл ретiнде сақтау үшiн, оған .exe кеңейтiлуi берiлу керек. Ол үшiн:
а) жадыға сақтау үшiн: Меню / Compile / Destination / Memory
б) дискiге сақтау үшiн: Меню/Соmpile/Destination/Disk
Memory немесе Disk Enter арқылы таңдалады.
Memory мен Disk-нiң бiреуi таңдап алынған соң, Меню /Compile/ Make енгiзiледi немесе Ғ9 басылады. Орындалушы файл жасалады. Каталогтағы файлдар тiзiмiнде кеңейтiлуi .exe файлы пайда болады.
Тапсырма. Орындалушы (кеңейтiлуi .exe) файл жаса. Каталогты ашып, файлдың жасалғандығын тексер.
6. Жұмысты аяқта.
№2 зертханалық жұмыс. Математикалық функциялардың Паскаль тілінде жазылуы
Мақсаты: Қарапайым және күрделі математикалық өрнектердің Паскаль тілінде жазылуын меңгеру .
Теориялық бөлім
Математикалық өрнектi Паскаль тiлiнде жазу ережелерi:
1.Өрнек бiр жолға тiзбектей жазылады, сондықтан амалдардың орындалу тәртiбiнiң бұзылмауын ескеру керек.
2. Жоғары және төменгi индекстер ереже бойынша жазылады.
3. Функцияның аргументi жақша iшiне алынады.
4. Тригонометриялық функциялардың аргументi градуспен емес, радиан түрiнде (x*PI/180) жазылады.
5. Ашылған және жабылған жақшалар саны тең болады.
6. Математикалық өрнекте дөңгелек жақшалар ғана жазылады.
Дәреженi есептеудiң стандарттық функциясы жоқ. Бiрақ, оны стандарттық функциялар арқылы былайша өрнектеп жазуға болады:
ах: = ехр(х* ln(а)), ( егер а>0 болса ғана).
Сол сияқты, tg(x) = sin(x) / cos(x);
-
Математикада
|
Паскальда
|
Нәтиженiң типi
|
|x|
|
abs(x)
|
бүтiн, нақты
|
x2
|
sqr(x)
|
бүтiн, нақты
|
x
|
sqrt(x)
|
нақты
|
sinx
|
sin(x)
|
нақты
|
cosx
|
cos(x)
|
нақты
|
arctg(x)
|
arctan(x)
|
нақты
|
eх
|
exp(x)
|
нақты
|
lnx
|
ln(x)
|
нақты
|
lgx
|
ln(10)/ln(x)
|
нақты
|
п=3,141592..
|
Pi
|
нақты
|
Жұмыс технологиясы.
1.Паскаль терезесін ашып, мына жолдарды теріңіз.
Program ornek;
uses crt;
var x,y,z,a:real;
begin
clrscr;
x:=
y:=
z:=
writeln(‘z=’,z);
readln;
end.
1 жаттығу
x=5; y=3 мәндерінде өрнегінің мәнін есептеу.
2.Бағдарламадағы мына жолдарды өзгертіңіз.
x:=5;
y:=3;
z:=(sqrt(sqr(x)+2*y)+sin(15*pi/180))/(2*x)
3.Бағдарламаны жұмысқа қосып, нәтижесін қараңыз.
Сұрақтарға жауап беріңіз.
1. (sqrt(sqr(x)+2*y)+sin(15*pi/180)) өрнегі неге жақшаға алынған?
2.15*рі/180 формуласы нені білдіреді ?
2 жаттығу. өрнегінің мәнін есептеу.
4. Z:= жолына мынаны теріңіз:
Z:=abs(abs(x-100)*3/(2*x+ln (y))+2*sin(y)/cos(y))+exp(x+y)/exp(y*ln(x));
5.Бағдарламаны жұмысқа қосып, нәтижесін қараңыз.
Сұрақтар:
3. sin (y)/ cos (y) нені білдіреді?
4. exp (x+y) неге жақшаға алынған? Осы жазуды exp(x)+y деп жазуға бола ма?
3 жаттығу. өрнегінің мәнін есептеу.
Z:= жолына мынаны теріңіз:
Z:=(3*exp(5)*exp(5*ln(y))+ sqrt(sqr(cos(y)+sin(sqr (y))))/exp(2/3*ln(x+y));
Сұрақтар:
5. е5 және у5 екеуінде де дәреже көрсеткіші 5, бірақ жазылуы әр түрлі. Неге?
7 ....sin (sqr(y)))) жолдарында неге 4 рет )))) жақша қойылған?
№3 тақырып Негізгі процедураларға бағытталған алгоритмдік тілдерде программалау.
№3 зертханалық жұмыс. Шығару, енгізу процедуралары
Мақсаты: Экранға әр түрлі хабарлама, нәтиже шығаруды және мәндерді енгізуді үйрену.
Теориялық бөлім
WRITE – айнымалының мәнiн, өрнектiң мәнiн, текстi экранға шығарады.
Жазылу форматы: write(ln) (<параметр>);
Жазылу түрлерi:
writeln (өрнек); – өрнектiң мәнiн экранға шығарады. writeln (sqr(25));
writeln(x); – x айнымалының мәнi шығады.
writeln (‘текст’) – апострофтың iшiндегi текст шығады.
writeln ( өрнек, ’текст’, айнымалылар);
writeln; – бос жол шығарады.
read(ln) – сандық мәндердi, символдарды, жолдарды клавиатурадан енгiзедi.
Жазылу форматы: read(ln)(айнымалылар тiзiмi);
Жазылу түрлерi:
readln(x) – x-тiң мәнi енгiзiледi.
readln(a,b) – a,b мәндерi бос орынмен ажыратылып енгiзiледi.
readln- енгізу клавишасы басылғанын күтеді.
Read процедурасы орындалғанда, айнымалының мәнiн енгiзу үшiн бағдарлама жұмысында кiдiрiс болады. Айнымалының мәнiн оқушы клавиатурадан енгiзедi. Егер read процедурасында айнымалылар тiзiмi көрсетiлсе, онда тiзiмдегi айнымалылардың мәндерi клавиатурадан бос орынмен ажыратылып енгiзiледi. Әрбiр read процедурасынан соң Enter клавишасы басылады.
1 жаттығу. Қадыр Мырзалиевтің «Ана тілі» тақпағының бір шумағын экранға шығару.
1. Бағдарлама тексін теріңіз
program text;
uses crt;
begin
clrscr;
Writeln; Writeln(‘Ана тілі’); Writeln;
Writeln(‘Ана тілің арың бұл,’);
Writeln(‘Ұятың боп тұр бетте.);
Writeln(‘Өзге тілдің бәрін біл,’);
Writeln(‘Өз тіліңді құрметте’); Writeln;
Writeln(‘Қ.Мырзалиев‘); Writeln;
readln;
end.
Бағдарламаны орындап, нәтижесін көріңіз. Экранда орналасуына назар аударыңыз
2. Мына жолдарға өзгерістер енгізіңіздер
Writeln (‘Ана тілі’:20);
Writeln (‘К. Мырзалиев’:30);
Бағдарламаны орындап, нәтижесін көріңіз. Қандай айырмашылық бар? 20 және 30 цифрларын өзгертіңіз. Нәтижесіне түсініктеме беріңіз.
2 жаттығу. Жаңа терезеде мына жолдарды теріңіз
uses crt;
var x,y,a,b: byte;
begin
clrscr; {1}
readln(x); {2}
y:=10; {3}
writeln(x); {4}
writeln(x+y); {5}
readln;
end.
Орындап нәтижені қараңыз да, дәптерге жазып алыңыз
3. Мына {4} және {5} жолдарды өзгертіңіз:
Writeln (‘х=’, х);
Writeln (‘у+х=’, х+у);
Орындап нәтижені қараңыз. Қандай өзгеріс бар? Қорытынды жасаңыз.
4. Мына өзгерістерді енгізіңіз. {3} жолдан соң мына жолды теріңіз:
а:= х*у; {3а}
{4}, {5}жолдарды өзгертіңіз: writeln (x,’*’, y, ‘=’ , a); {4}
Writeln (‘x=’, x:10, ‘y=’;10, ‘a=’,:10, a:10); {5}
Орындап нәтижені қараңыз. Қандай өзгеріс бар? Қорытынды жасаңыз. {5}жолдағы : белгісі қандай қызмет атқарады?
3 жаттығу. Жаңа терезеде жазыңыз:
uses crt;
var x,y,a,b:real; s:string;
begin
clrscr; {1}
x:=100; y:=3; {2}
а:=х/у;
writeln (‘a=’;a); {3}
writeln (‘a=’:10);
writeln (‘a=’:10:5); {4}
writeln(‘a=’:10:2);
writeln(‘a=’:10:0);
writeln(‘a=’:0:5); {5}
writeln(‘a=’:0:2); {6}
writeln(‘a=’:0:0);
readln;
end.
Бағдарламаны орындап, нәтижесін қараңыз. Экранға шығудың қандай айырмашылықтары бар? Санның бөлшек бөлігіндегі цифрлар санының өзгеруі неге байланысты?
4 жаттығу. Жаңа терезеде жазыңыз:
uses crt;
var x,y,a,b:real; s:string;
begin
clrscr; {1}
readln(x,y); а:=х/у; {2}
writeln (‘x=’;x); {3}
writeln (‘y=’,y);
writeln (‘a=’,a); {4}
readln; end.
Бағдарламаны орындаңыз. Экранға курсор шығады. Бос орынмен ажыратып екі сан енгізіңіз. Экранға шыққан х пен у-тің мәндері енгізілген сандарға ие болды ма?
Бағдарламаны бірнеше рет орындап, нәтижесін жазып алыңыз.
Сұрақ: Readln қандай қызмет атқарады? Ол орындалғанда экран қандай түрде болады? Курсордың орналасуы қалай?
5 жаттығу. Диалогтық программа құру
uses crt;
var s, a, b:string; x,y,z:byte;
begin
clrscr; {1}
Writeln(‘Сәлем!’);
Write(‘Атың кім?’); Readln(s); Writeln;
Write(‘Екі сан енгіз ’); readln(x,y);
Write(‘Бір сан енгіз ’); readln(z); Writeln;
Writeln(‘Үш санның қосындысы = ’, x+y+z); Writeln;
Writeln(‘Сау бол! ’,s); Writeln;
readln; end.
Cұрақ: Write және Writeln айырмашылығы неде?
Өрнектерді бағдарламалау тілінде жазып есептеңіз.
1. p = Жауабы: 402.1339
2. k=- Жауабы: 62.10672
3. c= Жауабы: 3472.599
4. d= Жауабы: 0.0406535
Пайдаланылатын әдебиет: [4], 5-24 беттер;
№4 зертханалық жұмыс Тармақты алгоритмдер. Шарттық оператор
Теориялық бөлім
Белгiлi бiр шартты тексеру нәтижесiне байланысты екi түрлi iс-әрекеттiң бiреуi ғана орындалатын жағдайда шарттық оператор қолданылады. Шарттық оператордың жазылу форматы:
Толық түрi: If <шарт> then <1 оператор >
еlse <2 оператор >;
Шарттық оператор былай орындалады: Ең алдымен шарттағы логикалық өрнектiң нәтижесi анықталады. Егер нәтиже ақиқат болса <оператор1> орындалады, ал нәтиже жалған болса <оператор2> орындалады.
Қысқаша түрi: Шарттық операторда шарт орындалмаған жағдайда еш нәрсе орындау қажет болмаса, else тармағын жазбауға болады:
If <шарт> then <оператор>;
Тармақты алгоритмдердің орындалу реті блок-схемада анық көрінеді. Блок-схема дегенiмiз алгоритмдi геометриялық фигуралар арқылы бейнелеу.
Мысал: экранға екi санның үлкенiн шығару керек.
Есептi шығару алгоритмiн блок-схемамен көрнекi түрде көрсетуге болады.
program esep_1;
var x, y, z: real; х,у-берiлген айнымалылар, z-нәтиже
begin
writeln (‘2 сан енгiз’);
readln (x, y); бос орынмен 2 сан енгiземiз
if x>y then z:=x егер x >y болса, онда нәтиже х болады
еlse z:=у; әйтпесе нәтиже y болады
writeln (z); readln;
end.
Бағдарламаның орындалу барысында 5 және 7 сандарын енгiземiз. Айнымалы х-ке 5, у-ке 7 меншiктеледi (х:=5,y:=7). 5>7 шарты орындалмайды, нәтижесi жалған, сондықтан else –ден кейiнгi оператор орындалады, ол оператор нәтижеге у-тi меншіктейді. Одан соң z-тің мәнi экранға шығарылады. Экранға 7 жазылады.
Мысал: Енгiзiлген санның [-5;5] аралығында жататындығын анықтау.
Енгiзетiн санды х деп белгiлеймiз, типi – real. Егер х саны үшiн х>-5 және х<5 шарттары бiр уақытта орындалатын болса, онда х саны [-5;5] аралығына тиiстi болады
program aralyk;
var x: integer;
begin
writeln (‘х санын енгiз’); readln (x);
if (x>-5) and (x<5)
then writeln (‘аралықта жатады’)
еlse writeln (‘аралықта жатпайды’);
readln;
end.
Тапсырма: Енгізілген сан терiс болса, оның таңбасын қарама-қарсыға ауыстыр. Есептi шешу үшiн мына шарттық операторды қолдан. If x<0 then x:=-x;
Пайдаланылатын әдебиет: [2], 14-25 беттер; [1], 91-98 беттер;
Қабаттасқан шарттық оператор. Кейбiр есептердi шешу кезiнде, бiрнеше варианттарды қарастыруға тура келедi. Бұл жағдайда, бiрнеше шарттық операторлар қолданылады, яғни then, else қызметшi сөздерiнен кейiн, жаңа шарттық оператор жазылады.
Мысал: Бүтiн а, b,с сандары берiлген. Егер аbс болса, барлық сандарды өз квадратымен ауыстыр, егер а>b>с болса, әрбiр санды үшеуiнiң iшiндегi ең үлкенiмен, басқа жағдайда, әрбiр санның таңбасын өзгерт.
Есептiң берiлгенi бойынша: егер а b с болса, онда a:=a2, b:=b2, c:=c2;
егер а> b >с, онда с:=а, b:=а;
басқа жағдайда, a:=-а, b:=-b, c:=-с;
program esep_3;
var
a , b , c : integer ;
begin
writeln (‘a, b ,с сандарын енгiз’); readln (a , b , c );
if (a<=b) and (b<=c) then
begin
a:=sqr(a); b:=sqr(b); c:=sqr(c);
end
else
if (a>b) and (b>c) then
begin c:=a; b:=a; end
else begin a:=-a; b:=-b; c:=-c; end ;
writeln (a:5,b:5,c:5); readln;
end.
Есептi шешудiң блок-схемасы төмендегiдей болады.
Тапсырма: Жоғарыдағы мысалдағы шарттық операторды былай өзгертсек:
if (a<=b) and (b<=c) then
begin
a:=sqr(a); b:=sqr(b); c:=sqr(c);
if (a>b) and (b>c) then
begin a:=c; b:=c; end;
else begin a:=-a; b:=-b; c:=-c; end ;
end.
бағдарламаның орындалуы қалай өзгередi? Есептiң берiлгенi қалай болады. Блок-схемасын сыз.
№5 зертханалық жұмыс Таңдау командасы
Мақсаты: Таңдау операторының жазылуы мен пайдаланылуын меңгеру.
Теориялық бөлім
Егер алгоритмде бiрнеше жағдайдың бiреуiн пайдалану қажет болса, онда таңдау операторы қолданылады. Таңдау case операторымен программаланады. If операторы екi жағдайдың бiреуiн орындайды, ал case операторы бiрнеше жағдайдың бiреуiн таңдайды. Жағдайлар таңдау айнымалысының мәнiне байланысты таңдалады.
Жазылу форматы:
case <таңдау айнымалысы> of
<1-тiзiм (мән)>:<оператор 1;>
<2-тiзiм (мән)>:<оператор 2;>
:<оператор n;>
[else <оператор>]
end;
Case операторының орындалу тәртiбi:
Алдымен <таңдау айнымалысының> мәнi анықталады. Анықталған мән қай тiзiмге жатса, сол тiзiмге сәйкес келетiн оператор орындалады да, басқа операторлар орындалмай, case операторы жұмысын аяқтайды.
Егер <таңдау айнымалысының> мәнi тiзiмнiң ешбiреуiне жатпаса, онда else-де көрсетiлген <оператор> орындалады. Еlse болмаса, case операторы жұмысын аяқтайды.
Case операторын пайдалану ережелерi:
1. Таңдау айнымалысы мен тiзiмдегi мәндер бiр типтi болу керек.
-
Еlse тармағының болуы мiндеттi емес, кей жағдайда жазбауға да болады, егер else тармағы жазылса, алдыңғы оператордан соң (;) қойылады.
3. Мәндер тiзiмiнде үтiрмен ажыратылған жеке мәндердi немесе бастапқы және соңғы мәндерi “..” ажыратылған диапазонды көрсетуге болады.
4. <Операторда> “;”-мен ажыратылған бiрнеше операторды жазуға болады.
5. Таңдау айнымалысы литерлiк, бульдiк және пайдаланушының типтерiнде болады.
Ескерту: String, real типтегi айнымалылар таңдау айнымалысы бола алмайды!
№6 зертханалық жұмыс Циклдер.
Теориялық бөлім
Параметрлi қайталану. Қайталанатын әрекеттердiң саны алдын-ала белгiлi болғанда For операторы пайдаланылады. Бұл оператор параметрлi қайталану деп аталады, себебi, қайталану саны параметр немесе басқарушы айнымалы деп аталатын айнымалының мәнiне байланысты болады. Бұл айнымалыда қайталану саны көрсетiледi. Қайталанатын әрекеттер цикл денесi деп аталады.
Жазылу форматы:
For <циклдiң параметрi>:= <s1> to <s2> do
<оператор>; { өсу ретімен }
For <циклдiң параметрi> := < s2> downto < s1> do <оператор>; { кему ретімен}
Мұндағы: s1, s2 - параметрдiң бастапқы және соңғы мәндерi;
For … do - циклдiң тақырыбы;
<оператор> –цикл денесi.
Цикл денесi жай немесе құрама оператор болуы мүмкiн.
For операторы мынаны анықтайды:
-
параметрдiң өзгеру аралығын және цикл денесiнiң қайталану санын;
-
параметр мәнiнiң өзгеруiн ( to-өсу, downto-кему);
FOR операторы параметр барлық мәндерiне ие болып бiткенше, цикл денесiнiң орындалуын қайталауды тоқтатпайды.
Егер s2>s1 болса, цикл денесi (s2-s1+1) рет орындалады.
Егер s1>s2 болса, цикл денесi орындалмайды.
Алғы шартты цикл. Егер iс-әрекеттiң қайталану саны белгiсiз, бiрақ қайталану шарты белгiлi болса, онда while немесе repeat операторлары қолданылады.
While (әзiр) операторында қайталану шарты цикл денесiнен бұрын тексерiледi. Сондықтан while операторы алғы шартты цикл деп аталады.
Жазылу форматы:
While <қайталану шарты> do
<цикл денесi>
Қайталану шарты – бульдiк (логикалық) өрнек, цикл денесi - жай немесе құрама оператор. Цикл денесi орындалудан бұрын шарттағы өрнектiң мәнi анықталады. Егер ол мән true болса, цикл денесi орындалады. Шарттық өрнектiң мәнi тағы да анықталады, егер нәтижесi false болса циклдың жұмысы аяқталып, while-ден кейiнгi бiрiншi оператор орындалады.
Кейiнгi шартты цикл. Циклдің бұл түрінде:
-
қайталану шарты цикл денесiнен кейiн тексерiледi, сондықтан кейiнгi шартты цикл деп аталады.
-
қайталанатын iс-әрекеттер кем дегенде 1 рет орындалады.
-
шарттың нәтижесi true болғанда циклдiң орындалуы тоқтайды.
Жазылу форматы: repeat
<оператор;>
: {цикл денесi}
< оператор;>
until <циклді аяқтау шарты>;
Repeat және until сөздерiнiң арасындағы операторлар цикл денесi болады.
Кейiнгi шартты циклдiң орындалу тәртiбi: алдымен цикл денесi орындалады, одан соң циклден шығу шарты тексерiледi. Егер нәтиже false болса, цикл денесi тағы да орындалады, егер true болса, циклден шығады.
1-мысал: 999 саны енгiзілгенше бүтiн сандарды енгізе отырып, олардың қосындысын табу.
…
x: integer; sum: real;
begin
sum:=0;
repeat
write (‘х-тi енгiз’); readln(x);
if x<> 999
then sum:=sum+x;
until x=999;
writeln (‘сандардың қосындысы=’,sum); readln;
end.
Айнымалыларға түсiнiктеме:
х-енгiзiлетiн бүтiн сандар; sum-олардың қосындысы (real);
Бағдарламаның басында қосынды 0-ге теңестiрiледi. Одан соң repeat сөзiмен цикл ашылады. Цикл денесiнде “х-тi енгiз” сұрауымен х айнымалының мәнi енгiзiледi. If операторы ол санның 999-ге тең емес екендiгiн тексередi. Егер тең болмаса, Sum қосындысының мәнiне х саны қосылады. Циклдiң соңындағы until х=999 циклдiң аяқталу шартын тексередi. Егер х=999 болса, цикл аяқталады, until-ден кейiнгi оператор орындалады. Ол оператор
writeln (‘сандардың қосындысы=’,Sum); нәтиженi шығарады.
№7 зертханалық жұмыс Евклид алгоритмi
Теориялық бөлім
Евклид алгоритмi дегенiмiз, ол - терiс емес бүтiн екi санның ең үлкен ортақ бөлгiшiн (ЕҮОБ) табу алгоритмi.
х және у – бiр уақытта 0-ге тең емес, бүтiн, терiс емес сандар және ух болсын. Егер у=0 болса, онда ЕҮОБ(х,у)=х, ал егер у0 болса, онда х, у және r сандары үшiн, (мұндағы r дегенiмiз х:у-тiң қалдығы), ЕҮОБ(х,у)=ЕҮОБ(у, r) теңдiгi орындалады.
Мысалы, х=48, ал у=18 болсын.
ЕҮОБ(48,18)=ЕҮОБ(18,12) = ЕҮОБ(12,6) = ЕҮОБ(6,0) =6
1-мысал: Терiс емес екi санның ең үлкен ортақ бөлгiшiн (ЕҮОБ) табу бағдарламасы.
1-әдiс: Қалдықтар арқылы.
program algor_evklid;
var x,y: integer;
begin
writeln (‘ Екi санды енгiз’ ); readln(x,y);
repeat { циклдiң басы }
if x>y
then x:=x mod y { екi санның үлкенiн үлкендi кiшiге
else y:=y mod x; бөлгендегi қалдықпен ауыстыру}
until (x=0) or (y=0) ; { екi санның бiреуi 0-ге тең
болғанша, цикл орындалады }
writeln (‘ЕҮОБ= ’,x+y); readln; end.
2-әдiс: Айырма арқылы.
program algor_evklid;
var x,y: integer;
begin
writeln (‘ Екi санды енгiз’ ); readln(x,y);
repeat { циклдiң басы }
if x>y
then x:=x - y else y:=y - x; { екi санның үлкенiн
айырмамен ауыстыру }
until x=у; {екi санның тең болғанша қайталанады}
writeln (‘ЕҮОБ= ’,x); readln;
end.
Евклид алгоритмiн негiзге ала отырып, екi санның ең кiшi ортақ еселiгiн (ЕКОЕ) табуға болады. Формуласы: ЕКОЕ(х,у) = х*у/ ЕҮОБ(х,у).
Жолдар
Жол дегеніміз – ұзындығы 255-тен артпайтын символдар тізбегі. Тізбектің мағынасы болуы міндет емес. Мысал: ‘df56’, ‘*d-шар56‘, ‘*-4 лд’
Жолдар string жолдық типпен сипатталады. Жолдық типті анықтағанда ондағы символдар санын көрсетуге болады.
Жазылу форматы:
type
<типтің аты>=string [символдар саны];
var <идентификатор>: <типтің аты>;
String типтегі айнымалыны типті алдын-ала сипаттамай-ақ көрсетуге болады: var <идентификатор>:string[жолдың ұзындығы];
N символдан тұратын жолға жадыдан N+1 байт бөлінеді. N байт-символдарды сақтау үшін, ал бір байт – жолдың ұзындығын сақтау үшін.
Жолдық өрнектер. Олар жолдық тұрақтылардан, айнымалылардан, функциялардан және операция таңбаларынан тұрады. Мысал:’ма’+’ма’
Жолдық процедуралар мен функциялар
Аты, жазылуы
|
Қызметі
|
Ескерту
|
1. жою
delete(a,p,n)
|
a жолындағы р пози-циядан бастап, ұзындығы n символды жояды.
|
p<=255; нәтиже басқа айны-малыға меншіктелмейді.
|
2. кіргізу
insert (a,s,p)
|
a жолын s жолына р по-зициядан бастап кіргізеді.
|
нәтиже басқа айны-малыға меншіктелмейді.
|
3. типті ауыстыру
str(x,a)
|
x сандық шаманы жолға өңдеп, а-ға меншіктейді
|
х-ті шығару форматымен жазуға болады. Х сандық типте, а –жолдық типте.
|
4. типті ауыстыру
val(a,x,c)
|
a жолын сандық шамаға өңдеп, х айнымалыға орналастырады. А жо-лында бос символ болмау керек.
|
c-өңдеу нәтижесі, бүтін сан. Егер өңдеуде қате болмаса c=0 болады. А:string, х сандық типте, c:integer.
|
5.ұзындық
length(a)
|
a жолының ұзындығын табады.
|
Нәтижені айнымалыға меншіктеуге болады.
|
6. ретімен тіркестіру
concat(a,b,..s)
|
a,b,..s жолдарын сол ретімен тіркестіреді
|
-
|
7. белгілеу
copy (a,p,n)
|
a жолынан р позициядан бастап, ұзындығы n символды белгілейді.
|
егер p>length(a) болса, нәтижесі бос символ;
p>255 болса, қате.
|
8. позиция
pos (a,s)
|
a жолы s жолында нешінші позицияда тұрғанын табады.
|
егер a жолы s жолында болмаса, нәтиже=0
|
9.регистрді ауыстыру
upcase(ch)
|
кіші әріпті бас әріпке өзгертеді.
|
тек латын алфавитін ғана.
|
Мысалдар
Берілгені:
|
Қолданылған процедура, функция
|
Нәтиже
|
1.a:=’абвгде’
|
delete(a,4,2)
|
‘aбве’
|
2.s1:=’интика’
s2:=’форма’
|
insert(s2,s1,3)
|
‘информатика’
|
1.var x:integer;
a:string;
-------------
x:=72584
|
str(x,a)
str(-x:7,a)
|
‘72587’
‘-72584’
|
2.var a:string;
cod:integer;
---------------
a:=’25’;
a:=’14.2Е+2’;
a:=’14.2’
|
val(a,x,cod)
val(a,x,cod)
val(a,x,cod)
|
cod=0
cod=0
cod=5
|
3.st:=’1237’
st:=’klassio’
|
length(st)
length(st)
|
4
7
|
4.a1:=’ ab’;
a2:=’cd’;
a3:=’ej’
|
concat(a1,a2,a3)
concat(a1,’nm’,a2)
|
‘abcdej’
‘abnmcd’
|
5.st:=’abcdefjk’
|
copy(st,2,4)
copy(st,5,7)
|
‘bcde’
‘efjk’
|
8.a1:=’abcdef’;
a2:=’def’;
|
pos(a2,a1)
pos(‘e’,a2)
pos(‘k’,a1)
|
4
2
0
|
9.Ch:=’d’
A:=’x’
|
UpCase(Ch)
UpCase(A)
UpCase(‘a’)
|
‘D’
‘X’
‘A’
|
1-мысал. Енгізілген сөздегі ‘a’ әріптерін санау, ‘b’әрпіне ауыстыру.
1- әдіс: Алгоритм:
1.Сөзді енгізу.
2.Сөздің бірінші әрпін белгілеу.
3.Белгіленген символды ’a’ символымен салыстыру.
4.Егер сәйкес болса, санауышты бірге арттыру, сол символдың орнына ’b’ символын қою;
5.Осылайша барлық символдарды қарастыру.
Бағдарлама.
program sanau;
var s:string; n,l,i:byte; {n-‘a’әрпін санауыш }
begin
n:=0; readln(s); l:=length(s); { l сөздің ұзындығы}
for i:= 1 to l do
if copy(s,і,1)=’a’ {кезектегі әріпті белгілеп,
then ’a’ әрпімен салыстыру}
begin
delete (s,і,1); insert(‘b’,s,i);
n:=n+1; { а әрпін санау}
end;
writeln (‘сөзде,’n,’ a әрпі бар’);
end.
2-әдіс. Алгоритм:
1.Сөзді енгізу.
2. ’a’әрпін санайтын санауыш енгізу.
3.Сөздегі ‘a’әрпі тұрған позицияны тауып, сол орынға ‘b’ әрпін жазу.
4.Сөздегі барлық позициялар үшін 3 пунктті қайталау.
5.Нәтижені шығару.
Бағдарлама.
program sanau;
var
s:string; n:byte;
begin
write (‘сөзді енгіз’); readln(s); n:=0;
while pos (‘a’,s)>0 do
begin
n:=n+1; s[pos(‘a’,s)]:=’b’;
end;
writeln (‘сөзде’,n,’ a әрпі бар’);
end.
№6 тақырып. Ішкі бағдарламалар: процедуралар және функциялар
№8 зертханалық жұмыс Процедуралар
Процедураныњ сипаттамасы процедураныњ таќырыбынан жєне денесінен т±рады.
Процедураныњ таќырыбы procedure деген резервтелген сµзден, процедураныњ атын білдіретін идентификатордан жєне жаќшаѓа алынып, типтері кµрсетілген формальді параметрлер тізімінен т±рады. Процедура денесі бағдарламалыќ блоктан т±рады.
Процедураныњ жалпы т‰рі:
procedure <аты>[(формалдыќ параметрлер тізімі)];
сипаттама бµлімі
begin
операторлар бµлімі
end;
Процедура µздігінен орындалмайды. Ол аты бойынша негізгі бағдарламадан шаќырылады. Шаќыру жолында оныњ фактілік (наќты) параметрлері кµрсетіледі.
Фактілік жєне формальдыќ параметрлердіњ арасында мынадай сєйкестік болу керек:
● саны бірдей;
● типтері бірдей;
● жазылу реті бірдей;
Формальдыќ параметрлердіњ мынандай т‰рлері болады:
- параметр – мєндер;
- параметр – айнымалылар;
Параметр – мєндер. Параметр – мєндер негізгі бағдарламадан ішкі бағдарламаѓа мєндерді беру ‰шін ѓана ќолданылады, процедура нєтижесі негізгі бағдарламаѓа ќайтарылмайды. Параметр – мєндер фактілік мєндерге ешќандай ыќпал жасамайды.
1-мысал: тµрт санды екі-екіден ж±птап, квадраттарыныњ ќосындысын табу.
Б±л мысалда параметр – мєндер ќолданылады. Берілген сандар 2,5 пен 3,1; -7,2 жєне 5,3 болсын.
program mander;
var k, z, x, y: real;
procеdure sum_kv(a, b:real); {а, b формальдық параметрлер}
begin {процедура денесі}
a:=a*a; b:=b*b;
writeln(’квадраттар ќосындысы=’, a+b);
end;
begin {негізгі бағдарлама денесі}
х:=2.5; у:=3.1;
sum_kv (x,y);
z: = -7.2; k:=5.3;
sum_kv (z,k);
readln;
end.
Бағдарламаѓа т‰сініктеме
X, y, z, k - негізгі бағдарламадаѓы фактілік параметрлер. Олар негізгі бағдарламада сипатталады.
Sum_Kv процедурасында екі санныњ квадраттыныњ ќосындысы экранѓа шыѓарылады; а мен b - процедурадаѓы формальді параметрлер.
Процедура х, у параметрлерімен шаќырылѓанда а=2.5 жєне b=3.1 мєндеріне ие болады да, олардыњ квадраттарыныњ ќосындысы есептеледі.
Экранѓа мынандай хабарлама шыѓады:
2.5 жєне 3.1 квадраттарыныњ ќосындысы
Бағдарлама ж±мысы процедурадан шыѓып, негізгі бағдарламаныњ орындалуы жалѓасады. z пен k-ныњ мєндері меншіктеледі. Процедура енді z, k параметрлерімен шаќырылады.
А=-7.2, b=5.3 мєндеріне ие болады. Енді осы екі санныњ квадраттарыныњ ќосындысы есептеледі.
Экранѓа мынандай хабарлама шыѓады :
-7.2 жєне 5.3 квадраттарыныњ ќосындысы
процедура ж±мысы аяќталып, негізгі бағдарламаѓа оралады, негізгі бағдарлама ж±мысын аяќтайды.
Бағдарламаныњ орындалу тєртібі
1. Негізгі бағдарламадаѓы айнымалылар сипатталады.
2. X, Y параметірлерімен Sum_Kv процедурасы шаќырылып, процедура орындалады, болѓан соњ негізгі бағдарлама жалѓасады.
3. Z, K параметрлерімен Sum_Kv процедурасы шаќырылып, процедура орындалады, болѓан соң негізгі бағдарламаѓа оралады.
4. Негізгі бағдарлама ж±мысын аяќтайды.
Параметр–айнымалы. Параметр – айнымалылар процедураныњ нєтижесін негізгі бағдарламаѓа єкелу (ќайтару) ‰шін ќолданылады.
Параметр–айнымалылар негізгі бағдарламадаѓы фактілік параметрлерге ыќпал етіп, оларды µзгерте алады.
2-мысал. Санныњ дєрежесін табуды процедура етіп алып, у=a4*x4+a3*x3+a2*x2 мєнін есептеу бағдарламасын ќ±ру. М±ндаѓы, а4, а3, а2,х – клавиатурадан енгізіледі.
program kosindi;
var x, a4, a3, a2, y, s,:real
procedure dareje (a: real; n: byte; var d: real);
var i:byte;
begin {процедура денесі}
d:=1;
for i:=1 to n do
d:= d * a
end;
begin {негізгі бағдарламаның денесі}
readln(x, a4, a3, a2);
dareje(x,4,s); y:=s*a4;
dareje(x,3,s); y:= y +s*a3; dareje(x,2,s); y:=y+s*a2;
writeln (‘y=’, y); readln;
end.
Бағдарламадағы процедураѓа сипаттама. Процедура Dareje деп аталады. Онда а саныныњ n дєрежесі есептеліп, нєтижесі d-ѓа меншіктеледі. A,n,d- формальдыќ параметрлер. Дєреженіњ нєтижесі d негізгі бағдарламаѓа ќайтарылатындыќтан var d:real сипаттамасы жазылады. і-формальдыќ параметр емес, сондыќтан ол процедураныњ сипаттама бµлімінде жазылѓан.
Процедура денесінде а саныныњ n рет кµбейтіндісі есептеледі, а мен n-ніњ мєндері негізгі бағдарламадан беріледі.
Негізгі бағдарламаѓа сипаттама. Негізгі бағдарламада ќолданылатын фактілік параметрлер: х, а4, а3, а2, у, s; у-нєтиже, ал s-санныњ дєрежесініњ нєтижесі.
х, а4, а3, а2-мєндері клавиатурадан енгізіледі.
х4, s-параметрлерімен dаreje процедурасы шаќырылады.
Процедурадаѓы a=x, n=4 мєндеріне ие болып, х-тіњ 4 дєрежесі есептеледі. Нєтижесі S параметрімен негізгі бағдарламаѓа ќайтарылады, яѓни s:=d болады.
Негізгі бағдарламада y:=s*a4 мєні есептеледі.
x,3,s параметрлерімен процедура таѓы да шаќырылады, яѓни a=x, n=3 мєндерінде х-тіњ 3 дєрежесі есептеледі. Нєтижесі, яѓни d–ныњ мєні s-ке меншіктеледі, s жања мєнге ие болады да, негізгі бағдарламада y:=y+s*a3 есептеледі. х, 2, s параметрлерімен процедура шаќырылып, іс-єрекет қайталанады.
№9 зертханалық жұмыс. Функциялар.
Теориялық бөлім
Паскаль тілінде пайдаланушы стандарттыќ функциялардан басќа, µз функциясын аныќтай алады. Ондай функциялардыњ сипаттамасы функцияныњ таќырыбынан жєне функция денесінен т±рады.
Функцияныњ жазылуыныњ жалпы т‰рі:
Function аты(формальді параметрлер тізімі): нєтиженіњ типі;
сипаттама бµлімі
begin
функция денесі
end;
Функция негізгі бағдарламадан аты бойынша шаќырылады. Функцияѓа берілетін мєндер, ондаѓы формальдыќ параметрге сєйкес болу керек. Функцияныњ таќырыбында функцияныњ аты жєне типтері кµрсетілген формальды параметрлер тізімі жазылады. Тізім жаќшаѓа алынады. Жаќшаныњ сыртында функция нєтижесініњ типі жазылады.
Функция денесінде кем дегенде бір меншіктеу операторы функцияныњ атына мєн меншіктейтін болу керек!
3-мысал. Санның дәрежесін табуды функция етіп алып, z=(a5+a-3) / (2· am) – өрнегінің мәнін есептеу.
program z_funk;
var m: integer; a, z, r: real;
function dareje (n: integer; x : real): real;
var i: integer; y: real;
begin
y:=1;
for i:= 1 to n do
y:= y*x; dareje:= y;
end;
begin
readln (a, m);
z:= dareje (5,a);
z:= z+ dareje(3,1/a);
if m=0 then r:=1
else if m>0 then r:= dareje (m,a)
else r:=dareje (m,1/a);
z:= z/(2*r);
writeln ('a=',a, 'm=':10, m, 'z=':10, z);
readln; end.
Бағдарламадағы функцияға сипаттама. Функцияның аты dareje деп аталады. Бұл функция хn дәрежесін есептейді. N мен х- функцияның формальды параметрлері: n- дәреже көрсеткіші, типі integer; ал x n дәрежеге шығарылатын сан, типі real. Негізгі пограммаға қайтарылатын функцияның нәтижесі де нақты типті.
Функцияда формальды параметрлерден басқа, і және у айнымалылары сипатталған. i-қайталану санын білдіреді.
Y айнымалысы санды өз-өзіне і рет көбейтудің нәтижесін сақтайды. N-дәреже есептеліп болған соң, dareje функциясына y-тің мәні меншіктеледі.
Негізгі бағдарламаға сипаттама. Негізгі бағдарламада m,a,z,r айнымалылары сипатталады. m - дәреже көрсеткіші; a - берілген сан;
r - аn дәрежесінің нәтижесі; z - нәтиже.
Бағдарлама орындалғанда а және m мәндері клавиатурадан енгізіледі. z:=dareje(5,a) жолында 5 және а фактілік параметрлерімен dareje функциясы шақырылады.
Функциядаѓы n жєне x параметрлері сєйкес мєндерге ие болады, яѓни n:=5, x:=a. a5 есептеліп, нєтижесі dareje айнымалысына меншіктеледі. Негізгі бағдарламаѓа оралѓан соњ, функцияныњ мєні z айнымалысына меншіктеледі.
Z:=z+dareje(3,1/а) жолы орындалѓанда функцияныњ формальды параметрлері мына мєндерге ие болады. n:=3, x:=1/a; себебі, (a-n)=(1/an).
Функцияныњ орындалуы алдыңѓыдай. Негізгі бағдарлама орындалѓан соњ, z мєніне dareje мєні ќосылады. Шарттыќ операторда n-ніњ мєні тексеріледі. Соныњ нєтижесіне байланысты r-ді аныќтайды. Атап айтќанда, егер m=0 болса, онда r:=1;
егер m>0 болса, онда r:=am;
егер m<0 болса, онда r:=(1/am);
m,a параметрлерімен dareje функциясы шаќырылады, нєтижесі r-ге меншіктеледі. z:=z/(2*r) жолында z/(2*r) нєтижесі z-ке меншіктеледі.
Нєтиже экранѓа шыѓарылады.
Функциясы бар бағдарламаныњ орындалу тєртібі
1.Негізгі бағдарламадан фактілік параметрмен функция шаќырылады.
2.Функциядаѓы формальді параметрлер фактілік мєндерге ие болады.
3.Функцияныњ нєтижесі аныќталады, функцияныњ атына мєн меншіктеледі.
4.Негізгі бағдарламада функцияныњ мєні пайдаланылады.
Пайдаланылатын әдебиет: [2], 57-64 беттер; [1], 130-157 беттер;
№7тақырып. Ақпаратты компьютердің сыртқы құрылғыларында көрсету
№10 зертханалық жұмыс. Файлдар
Теориялық бөлім
Өте үлкен көлемді ақпараттарды сыртқы жадыда сақтау ыңғайлы. Мысалы, оқу орнындағы студенттер туралы, кітапханадағы кітаптар туралы, т.с.с. мәліметтер. Бұл ақпараттар бағдарламада файлдар арқылы пайдаланылады.
Файл дегеніміз сыртқы жадыда белгілі бір атпен сақталған деректердің жиыны.
Мәліметтерді файлдармен пайдаланудың себептері:
1. Бағдарламаның жұмыс барысында өте үлкен ақпаратты енгізу көп уақытты алады және адамды жалықтырады. Клавиатурадан енгізілген деректер мен экранға шығарылған нәтижелер сақталмайды, бағдарламаның жұмысы аяқталған соң жоғалып кетеді. Сондықтан, бұл ақпараттар алдын-ала дайындалып, дискіде сақталады да, қажетінше пайдаланыла беріледі.
2. Берілгендер файлын басқа бағдарламамен дайындап бірнеше бағдарламаны бір-бірімен байланыстыруға болады.
3. Бағдарламаның орындалу кезінде пайдаланушының қатысуы міндет емес.
Файлдық тип. Бір бағдарламада бірнеше файлмен жұмыс істеуге болады. Әрбір файл өз атымен аталады. Файлдағы компоненттер бір типте болады. Файлдың ұзындығы алдын-ала анықталмайды, ол құрылғының сыйымдылығына байланысты болады. Файлды бір типтегі мәндердің шексіз тізімі деп қарастыруға болады. Файлдың элементтері нольден бастап нөмірленеді. Файлдың элементтері ағымдағы көрсеткіш арқылы көрсетіліп тұрады. Ағымдағы көрсеткіш бағдарлама жұмысына байланысты бір элементтен екіншіге ауысып тұрады. Кез келген уақытта файлдың бір элементіне ғана қол жеткізуге болады.
1 элемент
|
2 элемент
|
3 элемент
|
4 элемент
|
...
|
|
|
|
|
|
|
ағымдағы көрсеткіш
|
|
Файлдардың элементтерін тізбекті (последовательный) немесе тікелей (прямой) қарастыруға болады. Тізбекті файлдың элементтеріне жазылу реті бойынша қол жеткізіледі. Тікелей қол жетімді файлдың элементтеріне олардың адресі бойынша қол жеткізіледі. Сондықтан, тікелей файлдың кез келген элементін кез келген уақытта пайдалануға болады.
Дискідегі деректер файлы Паскаль бағдарламасымен файлдық айнымалы арқылы байланысады. Бағдарламада көпшілік жағдайда файлдық айнымалыны f арқылы белгілейді.
Бағдарламаның айнымалыны сипаттау бөлімінде файлдық айнымалы былай сипатталады.
var
файлдық айнымалы: file of элементтердің типі;
Мысал:
var
f1, f2:file of integer; f1, f2 - элементтері бүтін типтегі файл.
s1 , s2:file of string; s1, s2- элементтері жолдық типтегі файл.
Файлдарды пайдалану әдістері.
1. Бағдарламаның басында файл мен файлдық айнымалыны байланыстыру қажет. Ол үшін мына процедура қолданылады:
assign(файлдық айнымалы, деректік файлдың аты);
2. Файлмен жұмыс істеу үшін алдымен оны ашу қажет. Файлды пайдалану мақсатына қарай ашудың екі түрі бар:
2.1. Файлдан деректерді оқу үшін –
Reset(файлдық айнымалы);
2.2. Жаңа файлды жасау үшін және оған деректерді жазу үшін
Rewrite(файлдық айнымалы);
3. Ашылған файлдың элементін оқу:
Read(файлдық айнымалы, айнымалы);
4. Ашылған файлға элемент жазу:
Write(файлдық айнымалы, айнымалы);
5. Файлмен жұмыс аяқталған соң файл жабылады:
Close(файлдық айнымалы);
1-мысал: Санды клавиатурадан енгізіп, san.txt файлына жаз.
program file_tip;
var f:file of integer; s:integer;
begin
assign(f1, 'san.txt’); { san.txt файлы f1 айнымалысымен байланыстырылады. }
rewrite(f1); { f1 файлы деректерді жазу үшін ашылады}
readln(s); write(f1, s); { s айнымалысының мәні f1 файлына жазылады}
close(f1); { пайдаланылып болған соң, f1 файлы жабылады}
readln; end.
2-мысал: Деректерді san.txt файлынан оқып, экранға шығар.
Бағдарламаны жазудан бұрын san.txt файлы алдын-ала дайындалады.
program file_tip;
var f1:file of integer ; s, n:integer;
begin
assign(f1, 'san.txt’); { san.txt файлы f1 айнымалысымен байланысты}
reset(f1); { f1 файлы деректерді оқу үшін ашылады}
read(f1, s); { f1 файлынан кезектегі элемент оқылып, s айнымалысына беріледі. }
writeln(s); {s айнымалысының мәні экранға шығарылады }
close(f1); {пайдаланылып болған соң, f1 файлы жабылады}
readln;
end.
№8тақырып. Графиктік операторлармен жұмыс
№11 зертханалық жұмыс. Графиканы бағдарламалау
Теориялық бөлім
Паскаль тілінде графикалық кескіндер жасау үшін, GRAPH модулі қолданылады. Бұл модульде 79 графикалық процедуралар, функциялар, тұрақты шамалар мен типтер орналасқан.
Графиканы жұмысқа қосу мына әрекеттерден тұрады:
uses Graph; {Graph модулін, яғни графикалық процедуралар,
орналасқан кітапхананы іске қосу}
var dv, mv:integer; {dv, mv – екі айнымалысы графикалық
режимді іске қосады}
dv:=Detect; {detect мәнімен қажет графикалық драйвер
мен режим автоматты түрде іске қосылады}
InitGraph(dv,mv,’c:\tP7\BGI’); {graph модулінің
орналасқан жолы көрсетіледі}
If GraphResult<>grOk then Halt(1); {Графикалық режимді
іске қосудағы қатесі тексеріледі}
Осы әрекеттерден соң графикалық операторлар жазылады. Графикалық әрекеттер орындалып болған соң, графикалық режимді жабу керек.
6.CloseGraph; {Графикалық режимді жабу}.
Монитор экраны нүктелер жиынынан тұрады. Графикалық экранда координаталар жазықтығының орналасуы төмендегідей:
Түстер таблицасы
Түстің
номері
|
Түстің аты
|
Түстің номері
|
Түстің аты
|
0
|
Қара
|
8
|
Қою
|
1
|
Көк
|
9
|
Көгілдір
|
2
|
Жасыл
|
10
|
Ашық жасыл
|
3
|
Бирюза
|
11
|
Ашық бирюза
|
4
|
Қызыл
|
12
|
Қызғылт
|
5
|
Малина
|
13
|
Ашық малина
|
6
|
Қоңыр
|
14
|
Сары
|
7
|
Ашық сұр
|
15
|
Ақ
|
Графика элементі
|
Паскальда жазылуы
|
Параметрлеріне сипаттама
|
1
|
2
|
3
|
Нүкте
|
PutPixel(x,y,t)
|
x,y-нүктенің координатасы; t-түсі, санмен беріледі.
|
Кесінді
|
Line(x1,y1,x2,y2)
|
(x1,y1),(x2,y2) ұштарының координаталары
|
Сызық
|
LineТо(x,у)
|
х,у нүктелеріне дейін сызады
|
Тік төртбұрыш
|
Rectangle(x1,y1,x2,y2)
|
(x1,y1),(x2,y2)диагональдың координаталары.
|
Боялған төртбұрыш
|
Bar(x1,y1,x2,y2)
|
(x1,y1),(x2,y2)диагональдың координаталары.
|
Шеңбер
|
Circle(x,y,r)
|
x,y-центрдің координатасы;
r-радиустың ұзындығы.
|
Эллипс
|
Ellipse(x,y,b,s,rx,ry)
|
b,s-эллипстік доғаның басы және соңы.
b =0, s=360 эллипс салады.
rx,ry – x және y бойынша радиустар.
|
Доға
|
Arc(x,y,b,s,r)
|
x,y,b,s,r- жоғарыда
|
Сектор
|
sector(x,y,b,s,rx,ry)
|
x,y, b,s, rx,ry - жоғарыда
|
Сызықтың түсі
|
SetColor(t)
|
t - түс номері, кестеде келтірілген.
|
Бояудың түсі
|
SetFillStyle(t1,t2)
|
t1 - бояу стилінің номері,
t2-бояудың түсі.
|
Текст шығару
|
Outtext(‘текст’)
|
Тексті экранның сол жақ шетіне шығарады.
|
Текст шығару
|
OutTextXY(x,y,’текст’)
|
Тексті көрсетілген координатаға шығарады
|
Көпбұ-рыш салу
|
DrawPoly(n,pp)
|
n -нүктелер саны;
|
Тұйық ай-мақты бояу
|
FillPoly(t, pp)
|
t-бояудың түсі
|
Суретті бағдарламалау мысалы:
program suret;
uses graph;
var dv, mv:integer;
begin dv:=detect;
initgraph(dv, mv,’c:\tp7\bgi’);
if graphresult<>grok then halt(1);
setcolor(5);
rectangle(10,15,610,430);
circle(350,100,50);
setfillstyle(1,6);
bar(100,250,200,300);
readln;
closegraph;
end.
|
program kopburish;
uses graph;
var pp:array[1..5] of PointType;
dv,mv,I,x1,y1:integer;
begin dv:=detect;
initgraph(dv,mv,’c:\ tp7\bgi’);
pp[1].x:=300; pp[1].y:=50;
pp[2].x:=400; pp[2].y:=50;
pp[3].x:=350; pp[3].y:=150;
pp[4].x:=150; pp[4].y:=200;
pp[5]:=pp[1];
DrawPoly(5,pp);FillPoly(3,pp);
readln;
closegraph;
end.
|
Пайдаланылатын әдебиет: [2], 101-104 беттер; [1], 336-408 беттер;
.
3 Әдебиеттер тізімі
Негізгі
-
В.Б.Попов TurboPascal 7.0. Учебное пособие. М. изд. «Финансы и статистика». 1996
-
Нұрғазина Б.Қ. Бағдарламалау негіздері.Турбо Паскаль, Павлодар, ТОО НПФ «ЭКО», 2007ж
-
Айтов Ж.А., Мақамбаев М.Б. Паскаль тілінде программалау. 1998
-
Есжанов Н.Т. Алгоритмдер. Алматы, 1998ж
-
Абрамов В.Г. Введение в язык Паскаль. М. Наука. 1988
-
Климова Л. М. Практическое программирование. Решение типовых задач в Pascal 7.0. М. Кудиц-образ. 2000.
Қосымша
-
Грогоно П. Программное обеспечение персональных ЭВМ. М. Мир. 1982
-
Йенсен К., Вирт Н. Паскаль: Руководство для использования и описание языка. М. Финансы и статистика. 1982.
-
Марченко А.И., Марченко Л.А. Программирование в среде TurboPascal. Киев. «Век» 1999
-
Цейл Дейл. Программирование на СИ. ДМК. 2000
-
Ян Борецкий. Турбо-Паскаль с графикой для персональных компьютеров М. Машиностроение. 1991.
0>0>5>2>1>1>2>1>