Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bakit-pasсал-лек.doc
Скачиваний:
45
Добавлен:
01.05.2015
Размер:
665.6 Кб
Скачать

1. Мәтіндік файлдар

Текстік файлдармен жұмыс істейтін процедуралар мен функциялардың сипаттамалары:

append (f) - Файлды ашу және соңына жаңа ақпараттар енгізу.

read (f, <тізім>)- Файлдан оқу.

readln (f, <тізім>) – Файлдан жолдарды оқу.

write (f, <тізім>) – Файлға жазу.

writeln (f, <тізім>) – Файлға жолдарды жазу.

eoln (f)- Файл жолының соңы.

seekeof (f)- Файл соңы.

seekeoln (f) - Файл жолының соңы.

2. Типтік файлдар

Типтік файлдармен жұмыс істегенде мынадай қосымша процедуралар мен функциялар қолданылады:

read (f, <тізім>) – Файлдан типтері көрсетілген компоненттерді оқу.

seek (f, num) - Файлдың нөмірі көрсетілген компонентіне орналастыру.

truncate (f) - Ағымдағы компоненттен бастап файлдың бөлігін жою.

write (f, <тізім>) - Типтері көрсетілген компоненттерді файлға жазу.

filepos (f) - Файлдың ағымдағы компонентінің номері.

filesize (f) - Файлдың ағымдағы компонентінің өлшемі.

3.Типтік емес файлдар

Типтік емес файлдармен жұмыс істегенде мынадай қосымша процедуралар мен функциялар қолданылады:

blockread (f, buf, n [,result])- Файлдан компоненттерді оқу.

seek (f, num) - Файлдың номері көрсетілген қажетті компонентіне орнату.

truncate (f) - Ағымдағы компоненттен бастап файлдың бөлігін жою?

blockwrite (f, buf, n[, result]) - Типтері көрсетілген компоненттерді файлға жазу.

filepos (f) - Файлдың ағымдағы компонентінің номері.

filesize (f) - Файлдың ағымдағы компонентінің өлшемі.

Бірнеше мысалдар қарастырайық. Мазмұны мына суретте көрсетілгендей екі файл берілсін.

Файл аты: Asan

Файл аты: Murat

1 3 5 6 7 8

2 4 4 4

3 2 6 2 2

4 3 3 3 3 3 3

5 7 7 7 7 7 7

6 9 9 5 9 9 9

7

3

1

Ata Ana Ara Sana

Almaty

A s t a n a

Kazahstan

1-есеп. Әрбір элементін еселеу арқылы Asan файлын оқу.

Бұл есепті шешу үшін енгізу және шығару файлдарын текстік файл ретінде сипаттаймыз. Asan файлы алдын-ала құрылып, мәліметтермен толтырылған. Оны файлдық айнымалы f1-мен байланыстырамыз да, оқу үшін ашамыз.

Assign(f1, ‘Asan’);

Reset (f1);

F2 айнымалысын бос жолдың көмегімен стандартты шығару құрылғысымен (дисплей экранына) байланыстырамыз және оны жауапқа шығарамыз.

assign (f2, ‘’);

rewrite (f2);

Дисплей орнына dos форматындағы кез-келген файлдың атын көрсетуге болады. Сонан соң f1 файлының элементтерін оқитын және оларды бос орын арқылы f2 файлына жазатын цикл ұйымдастырамыз. Ол цикл eof(f1) функциясының көмегімен f1 файлының соңы табылғанша орындалады. Жұмыс соңында екі файлды да жабамыз.

program prog_1;

var f1, f2 : text; x : char;

begin

assign (f1, ‘c:\ e\one’); {Файл орналасқан орынды көрсету}

reset(f1);

assign(f2,‘’);

rewrite(f2);

while not eof(f1) do

begin

read(f1, x);

write(f2, x+ ‘’+x)

end;

writeln;

close(f1); close(f2)

end.

Айнымалылар: f1, f2 – текстік файлдар; x – файл элементі.

Өңделген Asan файлы мына түрде жауапқа шығарылады. Әрбір символ бос орын арқылы еселенеді.

1 1 3 3 3 3 5 5 6 6 7 7 8 8

2 2 4 4 4 4 4 4

3 3 2 2 6 6 2 2 2 2

4 4 3 3 3 3 3 3 3 3 3 3 3 3

5 5 7 7 7 7 7 7 7 7 7 7 7 7

6 6 9 9 9 9 5 5 9 9 9 9 9 9

7 7

3 3

1 1

2-есеп. «а» әрпін еселеу арқылы Murat файлын оқыңдар.

program prog_2;

var f1, f2 : text; x : char;

begin

assign(f1, ‘Murat’);

reset(f1);

assign(f2, ‘ ‘);

rewrite(f2);

while not eof(f1) do

begin

read(f1, x);

if (x = ‘a’) or (x = ‘a’) then write(f2, x+x)

else write(f2, x)

end;

writeln;

close(f1);

close(f2)

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. Murat файлын f1 файлдық айнымалымен байланыстырамыз және оны оқу үшін ашамыз.

3. f2 айнымалысын стандартты шығару құрылғысымен байланыстырамыз да оны жауапқа шығару үшін ашамыз.

4. f1 файлының элементтерін оқитын және оларды f2 файлына жазатын цикл ұйымдастырамыз. Ол цикл eof(f1) функциясының көмегімен f1 файлының соңы табылғанша орындалады.

5. Егер «А» немесе «а» әрпі кездессе ол жазу кезінде еселенеді.

6. Екі файлды да жабамыз.

Айнымалылар:

F1, f2 -текстік файлдар;

х – файл элементі.

Өңделген файлы мына түрде жауапқа шығарылады. Әрбір «а» немесе «А» әрпі екі рет жазылады.

AAtaa AAnaa AAraa Saanaa

AAlmaaty

AA s t aa n aa

Kaazaahstaan

3-есеп. Файлын оқыңдар және «а» әрпін санаңдар.

program prog_3;

var f1 : text;

x : char;

k : integer;

begin

k = 0;

assing(f1, 'Murat');

reset(f1);

while not eof(f1) do

begin

read(f1, x);

if (x='a') or (x='a') then k :=k+1;

end;

writeln('a әрпінің саны:=', k);

close(f1);

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. Murat файлын f1 файлдық айнымалымен байланыстырамыз және оны оқу үшін ашамыз.

3. f1 файлының элементтерін оқитын және «а» әрпін санайтын цикл ұйымдастырамыз. Ол цикл, eof(f1) функциясының көмегімен f1 файлының соңы табылғанша орындалады.

4. Нәтижені жауапқа шығарамыз.

5. Файлды жабамыз.

Айнымалылар:

f1, f2 - текстік файлдар;

х – файл элементі;

к – әріптің санын анықтау.

Жұмыс нәтижесі:

А әрпінің саны:=16.

4-есеп. Asan файлын оқыңдар және онда кездесетін цифрлардың қосындысын табыңдар.

Бұл есептегі текстік файлдың элементтерінің сандық мәнін анықтау үшін символдардың реттелген типке жатаныдығын пайдалануға болады. Цифрлардың ascii коды бірінен соң бірі орналасқан. Сондықтан кез-келген цифрдың мәнін былай анықтауға болады:

K := ord(x)-ord(‘0’);

program prog_4;

var f1 : text; x : char;

k, sum : integer;

begin

sum :=0;

assign(f1, ‘Asan’); reset(f1);

while not eof(f1) do

begin

read(f1, x);

if (x> = ‘0’) and (x<=‘9’) then

begin

k := ord(x)-ord(‘0’);

sum := sum+k

end;

end;

writeln(‘sum = :’, sum);

close(f1);

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. Asan файлын f1 файлдық айнымалымен байланыстырамыз және оны оқу үшін ашамыз.

3. f1 файлының элементтерін оқитын және цифрлардың қосындысын анықтайтын цикл ұйымдастырамыз. Ол цикл, eof(f1) функциясының көмегімен f1 файлының соңы табылғанша орындалады.

4. Нәтижені жауапқа шығарамыз.

5. Файлды жабамыз.

Айнымалылар:

f1, f2 -текстік файлдар; х –файл элементі;

k – көмекші айнымалы; sum – цифрлар қосындысы.

Жұмыс нәтижесі:

sum:=195

5-есеп. Murat файлының элементтерін өзіне-өзін екі рет жазыңдар.

Бұл жағдайда файлды екі рнет ашпау үшін, қажетті элементке орналастыру seek(f1, 0) процедурасын пайдаланамыз, яғни оның көмегімен f1 файлдың басына ораламыз. Бұл процедурамен жұмыс істеу үшін f1 файлдың типін, мысалы символдар файлы ретінде көрсету керек.

program prog_5;

var f1 : file of char; f2 : text;

x : char; i : integer;

begin

assign(f1, 'Murat')

reset(f1);

assign(f2, ' ');

rewrite(f2);

for i := 1 to 2 do begin

while not eof(f1) do

begin

read(f1, x);

write(f2, x);

end;

writeln;

seek(f1, 0) end;

writeln;

close(f1);

close(f2)

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. Murat файлын f1 файлдық айнымалымен байланыстырамыз және оны оқу үшін ашамыз.

3. f2 айнымалысын стандартты шығару құрылғысымен байланыстырамыз да оны жауапқа шығару үшін ашамыз.

4. f1 файлының элементтерін оқу және оларды f2 файлына жазу үшін екі рет көру мүмкіндігін ұйымдастырамыз.

5. Екі файлды да жабамыз.

Айнымалылар:

f1 –символдар файлы; f2- текстік файл ;

x –файл элементі; k – көмекші айнымалы.

Ata Ana Ara Sana Almaty A s t a n a Kasahstan

Ata Ana Ara Sana Almaty A s t a n a Kasahstan

6-есеп. Murat файлын оқыңдар және соңынан басына қарай жауапқа шығарыңдар.

Файлды көру үшін, тек типтік файлдарға қолданылатын файлдың ұзындығын анықтайтын filesize(f1) функциясын пайдаланамыз. Бұл кезде файлдың ұзындығы файл соңындағы символмен анықталады. Бұл символды назардан тыс қалдыру керек.

program prog_6;

var f1 : file of char;

f2 : text;

x : char;

t, i : integer;

begin

assign(f1, 'Murat');

reset(f1);

assign(f2, ' ');

rewrite(f2);

t :=filesize(f1);

for і:=t-1 downto 0 do

begin

seek(f1, i);

read(f1, x); write(f2, x)

end;

writeln; close(f1); close(f2)

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. Murat файлын f1 файлдық айнымалымен байланыстырамыз да оны оқу үшін ашамыз.

3. f2 айнымалысын стандартты шығару құрылғысымен байланыстырамыз да оны жауапқа шығару үшін ашамыз.

4. f1 файлының элементтерін соңынан кері оқуды және оларды f2 файлына жазуды ұйымдастырамыз.

5. Екі файлды да жабамыз.

Айнымалылар:

f1- символдар файлы; f2- текстік файл;

x – файл элементі; t – файл ұзындығы; i – цикл параметрі.

natshazaK a n a t s A ytamlA anaS arA anA atA

7-есеп. Murat файлын өзінезін соңынан басына қарай жазылған түрде тізбектей жазуды құрыңдар.

program prog_7;

var f1 : file of char;

f2 : text; x : char;

t, i : integer;

begin

assing(f1, 'Murat');

reset(f1);

assing(f2, ' ');

rewrite(f2);

t:=filesize(f1);

while not eof(f1) do

begin

read(f1, x); write(f2, x)

end;

writeln;

for i := t - 1 downto 0 do

begin

seek(f1, i); read(f1, x);

write(f2, x)

end;

writeln;

close(f1);

close(f2)

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. Murat файлын f1файлдық айнымалымен байланыстырамыз және оны оқу үшін ашамыз.

3. f2 айнымалысын стандартты шығару құрылғысымен байланыстырамыз да оны жауапқа шығару үшін ашамыз.

4. f1 файлының элементтерін оқу үшін екі рет тізбектей көруді (бірінші көру-басынан соңына дейін, ал екіншісі соңынан басына дейін) және оларды f2 файлына жазуды ұйымдастырамыз.

5. Екі файлды да жазамыз.

Айнымалылар:

f1- символдар файлы;

f2 – текстік файл;

x – файл элементі;

t – файл ұзындығы;

i – цикл параметрі.

Жұмыс нәтижесі:

Ata Ana Ara Sana Almaty A s t a n a Kazahstan

NatshazaK a n a t s A ytamlA anaS arA anA atA

8-есеп. Murat файлында бірінші нүктеден кейінгі сөздерді жойыңдар.

Бұл бағдарламада көрсетілген позициядан бастап файлдың бір бөлігін жою үшін truncate(f1) функциясын пайдаланамыз.

program prog_8;

var f1 : file of char; f2 : text;

x : char; k : integer;

begin

assing(f1, 'Murat'); reset(f1);

assing(f2, ' '); rewrite(f2);

k :=-1;

while not eof(f1) do

begin

k := k+1;

read(f1, x);

if x<>'.' then write(f2, x);

else begin

seek{f1, k+1);

write(f2, x);

truncate(f1)

end;

end;

writeln;

close(f1);

close(f2)

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. Murat файлын f1 файлдық айнымалымен байланыстырамыз және оны оқу үшін ашамыз.

3. f2 айнымалысын стандартты шығару құрылғысымен байланыстырамыз да оны жауапқа шығару үшін ашамыз.

4. f1 файлының элементтерін тізбектей көруді және оларды бірінші нүктеге дейін f2 файлына жазуды ұйымдастырамыз.

5. Келесі позициядан бастап файлдың қалдық бөлігін жоямыз.

6. Екі файлды да жабамыз.

Айнымалылар:

f1 – символдар файлы;

f2 –текстік файл;

x – файл элементі;

t – файл ұзындығы;

k – көмекші айнымалы.

Жұмыс нәтижесі:

Ata Ana Ara Sana Almaty A s t a n a

13-лекция. Мәтіндік файлдар. Мәтіндермен жұмыс. CRT модулі.

CRT модулі текстік мәліметтерді енгізу-шығару мүмкіндіктерін кеңейтуге арналған функциялар мен процедуралар кітапханасынан тұрады. Текстік режимдердің бірін іске қосу үшін мына процедура пайдаланылады:

procedure textmode (mode : word)

mұндағы mode –текстік режим коды, ол мына мәндерді қабылдайды:

- BW40 = 0 - ақ-қара түсті режим 40 х 25;

- CO40 = 1 - түрлі-түсті режим 40 х 25;

- BW80 = 2 - ақ-қара түсті режим 80 х 25;

- CO80 = 3 - түрлі-түсті режим 80 х 25; mono - 7- ақ-қара түсті адаптерге арналған монохромды режим;

- FONTSX8 = 256 – 80х45 режиміндегі шрифтер үшін немесе 80х50 режиміндегі vga ega немесе адаптерлері үшін қолданылады.

Қандай режим орнатылса да экранның сол жақ бұрышының координаталары x = 1 және y = 1 болады. Жалпы біз қарастыратын режим maxx = 40, maxy = 25.

Crt модулінің мүмкіндіктерін сипаттайтын функциялар мен процедуралар:

KeyPressed - Пернетақтадан перненің басылған, басылмағандығын анықтайды.

ReadKey - Басылған перненің мәнін оқиды.

TextBackground - Фон түсін анықтайды.

Text Color - Шығарылатын символдардың түсін анықтайды.

TextMode - Текстік режимді анықтайды.

ClrScr - Экранды тазалайды да, курсорды экранның сол жақ жоғарғы бұрышына орналастырады.

Window (x1, y1, x2, y2 : Byte) - Экранда текстік терезені анықтайды.

WhereХ- х координатасын көрсетілген орынға қайтарады.

WhereУ- y координатасын көрсетілген орынға қайтарады.

GotoXY(x, y : Byte) - Курсорды көрсетілген орынға ауыстырады.

Del Line - Жолды курсормен бірге жояды.

InsLine - Жол қояды.

ClrEol - Курсордан бастап жолдың оң жақ жиекке дейінгі бөлігін жояды.

AssignCrt(f : Text)- Текстік файлды Crt терезесімен байланыстырады.

Delay (T : Word) - Миллисекундқа (ұстап тұру) тоқтату.

Sound (F : Word) - Қажетті жиілікте дыбыс шығару.

No Sound - Динамикті ажырату.

Осы функциялар, процедуралармен жұмыс істеу мүмкін болу үшін бағдарлама басына uses crt; командасын жазу керек.

Textbackground (color : byte) процедурасының көмегімен экранның немесе текстік терезенің әртүрлі түстерін орнатуға болады. Color aйнымалысының мәндері 0 (қара түс) мен 7 (ақ түс) аралығында өзгереді. Символдардың түсін орнату үшін textcolor (color : byte) процедурасы қолданылады. Ол 0-ден 15 дейінгі түстерді қабылдайды.

Crt модулында қолданылатын түстер:

0 қара 9 Ашық-көгілдір

1 Көк 10 Ашық-жасыл

2 Жасыл 11 Ашық-бирюзовый

3 Бирюзовый 12 Ашық-қызыл

4 Қызыл 13 Ашық-малина

5 Малина 14 Сары

6 Қоңыр 15 Ақ

7 Ашық-сұр 128 Жылтылдау

8 Қою-сұр

Экран түсі қара түсте болады. Мысалы, экранды барлық түспен ретпен бояп шығу үшін келесі циклді ұйымдастырамыз:

for i := 0 to 15 do begin

textbackground(i); delay(1000);

clrscr

end;

Егер текстік терезені орнату және оны ретімен 15 түрлі түске бояу қажет болса, онда оны window процедурасының көмегімен былай жазамыз:

window (x1, y1, x2, y2);

for i:= 1 to 15 do begin

textbackground(i); delay(1000);

clrscr

end;

Мұндағы х1, у1 – терезенің сол жақ жоғарғы, ал х2, у2 – оң жақ төменгі бұрышының координаталары. Window процедурасын шақырған соң курсор сол жақ жоғарғы бұрышына орналасады, ал терезе фон түсімен толтырылады. Егер мына шарт (х2>х1) and (y2>у1) бұзылса немесе координаталар экран жиегінен шығып кетсе, онда window процедурасын шақыру қателік береді.

Crt модулінде клавиатураны басқарудың қосымша мүмкіндіктері readkey және keypressed функциялары арқылы жүзеге асырылады. Мысалы, барлық буферді (16 символға дейін) экранға шығару үшін келесі бағдарламаны пайдалануға болады:

program one_10;

uses crt;

var і : char; rr : string; L : integer;

begin

rr := ' ';

for і := 1 to 17 do begin

і := readkey;

rr := rr + і

end;

writeln (rr);

readln;

end.

1-есеп. Экранда Информатика текстін әртүрлі түспен бірнеше рет баспалдақ түрінде жазып шығарыңдар.

Бұл есепті шешу үшін алдын-ала экранның түсін орнатамыз, сонан соң фонмен бірдей болып қалмау үшін экрандағы жазудың түсі қандай аралықта өзгеретіндігін анықтаймыз.

writeln('Информатика');

операторы арқылы текст бірінші рет шығарылғанда курсор автоматты түрде келесі жолға түсіріледі. Сондықтан, жазу баспалдақ түрінде орналасу үшін мына оператор арқылы бірнеше бос орын шығарамыз:

write(' ' : 2*і);

Жазуды экранда көріп үлгеру үшін оны delay(1500) арқылы ұстап тұрамыз.

program prog_1;

uses сrt;

var і : integer;

begin

textbackground(2); clrscr;

delay(1000); textcolor(0);

for і := 1 to 11 do begin

textcolor(і+4);

writeln('Информатика');

delay(1500); end;

readln;

textbackground(I);

clrscr

end.

Есепті шешу алгоритмі:

1. Бағдарламаденесін айнымалыларды сипаттаудан бастаймыз.

2. Экранға жасыл түс және алғашқы жазуға қара түсті орнатамыз.

3. Жазудың түсін және оны баспалдақ түрінде шығаратын цикл ұйымдастырамыз.

4. Текстті экранда кез-келген пернені басқанша ұстап тұру үшін readln операторымен аяқтаймыз.

Айнымалылар:

і – цикл айнымалысы.

2-есеп. Әрқайсысының ішінде сұрақ белгісі бар, горизанталь бағытта орналасқан әртүрлі түстегі тіктөртбұрыштар салыңдар.

Бұл есепті шешу үшін x координатасы өзгеретін, ал y өзгермейтін әртүрлі түстегі текстік терезелерді қию қажет.

program prog_2;

uses crt;

var x, і : integer;

begin

textbackground(1);

clrscr;

x := 1; delay(1000);

textcolor(0);

for і := 1 to 11 do begin

if (і<>1) and (і<>9) then textbackground(і)

else textbackground(і+4);

window (x, 9, x+5, 14);

clrscr;

writeln;

writeln('?’);

delay(1500);

x := x+7;

end;

readln;

textbackground(1);

clrscr

end.

Есепті шешу алгоритмі:

  1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

  2. Экранға көгілдір түс және алғашқы жазуға қара түсті орнатамыз.

  3. Ішінде қара түстегі сұрақ белгісі бар әртүрлі түстегі терезелерді қиып шығаратын цикл ұйымдастырамыз.

  4. Бейнені экранда кез-келген пернені басқанша ұстап тұру үшін readln опреторымен аяқтаймыз.

Айнымалылар:

x – терезенің сол жақ жоғарғы бұрышының координатасыж

i – цикл айнымалысы.

3-есеп. Экранда бірінің ішінде бірі орналасқан әртүрлі түстегі бірнеше төртбұрыш салыңдар.

program prog_3;

uses сrt;

var і : integer;

begin

textbackground(2);

clrscr;

delay(1000);

for і := 1 to 15 do begin

textbackground(1+random(15));

window(2*і, і, 80-2*і, 26-і);

clrscr;

delay (1500);

end;

readln;

textbackground(2);

clrscr

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. Экранға жасыл түр орнатамыз.

3. Әрбір келесі төртбұрыш алдыңғысынан кіші болатындай терезелер шығаратын және оларды кездейсоқ түспен бояйтын цикл ұйымдастырамыз.

4. Суретте экранда кез-келген пернені басқанша ұстап тұру үшін readln операторымен аяқтаймыз.

Айнымалылар:

і – цикл айнымалысы.

4- есеп. Экранда төртбұрыш салыңдар және оны горизанталь бағытта дыбыспен сүйемелдей отырып, қозғалтыңдар.

Бұл есепті шешу үшін қозғалысты былай сипаттаймыз:

- Берілген түсте терезе саламыз.

- Оны delay(500) көмегімен экранда ұстап тұрамыз.

- Терезені фон түсімен бояймыз.

- Екінші рет экранды ұстап тұрамыз.

- Оңға жылжыған, мысалы x :=x+2 келесі терезені саламыз.

Дыбыс жиілігі 300 герц дыбысты бағдарламалау sound(300) процедурасымен, ал оны ажырату nosound процедурасымен жүзеге асырылады.

program prog_4;

uses crt;

var x, y, i : integer;

begin

textbackground(2);

clrscr;

x := 5; y := 10;

delay(1000);

for і := 1 to 30 do begin

x := x+2;

textbackground(9);

window(x, y, x+18, y+7};

clrscr;

sound(300);

delay(500);

nosound;

textbackground(2);

clrscr;

delay(300);

end;

readln;

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. Экранға жасыл түс орнатамыз және терезенің алғашқы координаталарын анықтаймыз.

3. Берілген түсте терезе қиямыз, оны экранда ұстап тұрамыз, сонан соң оны фон түсімен бояйтын цикл ұйымдастырамыз.

4. х координатасының мәнін арттырамыз.

5. Дыбыс генераторын іске қосамыз және ажыратамыз.

6. Шығару аяқталғанда жазбаны экранда кез-келген пернені басқанша ұстап тұру үшін readln операторымен аяқтаймыз.

Айнымалылар:

x, y – терезенің сол жақ жоғарғы бұрышының координатасы.

i – цикл айнымалысы.

5-есеп. Экранда төртбұрыш салыңдар және оны вертикаль бағытта дыбыспен сүйемелдей отырып қозғалтыңдар.

program prog_5;

uses crt;

var x, y, i : integer;

begin

textbackground(2);

clrscr;

x := 30; y :=2;

delay(1000);

for і := 1 to 15 do begin

y := y+1;

textbackground(9);

window(x, y, x+18, y+7);

clrscr;

sound(300);

delay(500);

nosound;

textbackground(2);

clrscr;

delay(300);

end;

readln;

clrscr

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2.Экранға жасыл түр орнатамыз және терезенің алғашқы координаталарын анықтаймыз.

3. Берілген түсте терезе қиямыз, оны экранда ұстап тұрамыз, сонан соң оны фон түсімен бояйтын цикл ұйымдастырамыз.

4. у координатасының мәнін арттырамыз.

5. Дыбыс генераторын іске қосамыз және ажыратамыз.

6. Шығару аяқталғанда жазбаны экранда кез-келген пернені басқанша ұстап тұру үшін readln операторымен аяқтаймыз.

Айнымалылар:

x, y – терезенің сол жақ жоғарғы бұрышының координатасы.

i – цикл айнымалысы.

6-есеп. Экранда төртбұрыш салыңдар және оны диагональ бағытта дыбыспен сүйемелдей отырып қозғалтыңдар.

program prog_6;

uses crt;

var x, y, i : integer;

begin

textbackground(2);

clrscr;

x := 7; y:= 1;

delay(1000);

for i := 1 to 16 do begin

y := y+1;

x := x+3;

textbackground(9);

window(x, y, x +18, y+7);

clrscr; sound(300); delay(500);

nosound;

textbackground(2);

clrscr;

delay(300);

end;

readln;

clrscr

end.

Есепті шешу алгоритмі:

1. Бағдарлама денесін айнымалыларды сипаттаудан бастаймыз.

2. Экранға жасыл түс орнатамыз және терезенің алғашқы координаталарын анықтаймыз.

3. Берілген түсте терезе қиямыз, оны экранда ұстап тұрамыз, сонан соң оны фон түсімен бояйтын цикл ұйымдастырамыз.

4. х және у координаталарының мәнін арттырамыз.

5. Дыбыс генераторыны іске қосамыз және ажыратамыз.

6. Шығару аяқталғанда жазбаны экранда кез-келген пернені басқанша ұстап тұру үшін readln операторымен аяқтаймыз.

Айнымалылар:

x, y – терезенің сол жақ бұрышының координатасы.

i – цикл айнымалысы.

14-лекция. Жазулар

Көптеген экономикалық есептерде және кеңселік іс қағаздарында ведомосттарды, құжаттарды, каталогтарды, тізімдерді өңдеуге тура келеді. Өңдеу барысында әртүрлі типтегі мәліметтерді бір топқа біріктіру қажеттігі туындайды. Мәліметтер тобымен жұмыс істеу үшін Паскаль тіліне жазулар түсінігі енгізілген. Ж а з у – әртүрлі типтегі мәліметтердің шектеулі жиынтығынан тұрады. Жазулар басқа мәліметтер сияқты сипаттамалар бөлімінде сипатталып, операторлар бөлімінде пайланылады.

Жазуды сипаттаудың жалпы түрлері:

  1. var t : record

a11, a12, …, a1r : type 1;

a21, a22, …, a2p : type 2;

………………………..

an1, an2, …, anm : type n

end;

  1. type t = record

a11, a12, …, a1r : type1;

a21, a22, …, a2p : type2;

……………………….

An1, an2, …, anm : type n

end;

Мұндағы Aij– алаң айнымалылары; type - алаңдардың типі; t - тип аты. Record қызмет сөзі операторлық жақшаны ашу, ал end операторлық жақшаны жабу қызметін атқарады. Осы операторлық жақшалардың ішінде жазудың элементтері сипатталады. Жазудың аты ретінде үтір арқылы ажыратылған атаулар тізімін пайдалануға болады. Жазу элементтерін олардың сипаттамаларымен бірге жазу алаңы деп атайды.

Жазу түсінігін емтихан ведомостын толтыру мысалы арқылы түсіндірейік.

Фамилиясы, аты

Бағасы

1

Акбуимова Ә.

4 5 3

2

Байдолда Ф.

5 5 4

3

Богатов Т.

3 5 4

4

Жакенов М.

5 4 5

5

Еншібай Б.

5 5 5

Бұл ведомостың әрбір жолы әртүрлі типтегі жеке элементтерден тұрады:

  1. рет номері – бүтін сан;

  2. фамилиясы, аты – символдық массив;

  3. бағалар – бүтін сандар массиві.

Осы мәліметтерді бір топқа біріктіріп, оны жазу деп атауға болады. Жалпы жазуға және оның элементтеріне атау берейік: барлық жазудың аты - b; рет номері - n; фамилиясы, аты - fa; бағасы - ozenka.

Бағдарлама ішінде жазу элементімен жұмыс істеу үшін, дәл (құрмалас) атауды пайдаланамыз. Дәл атау жазу аты мен оның элементінің атынан тұрады:

ЖАЗУ АТЫ. ЭЛЕМЕНТ АТЫ

Мысалы,

b.n

b.fa

b.ozenka

Жазулар басқа мәліметтер сияқты сипаттамалар бөлімінде сипатталып, операторлар бөлімінде пайдаланылады.

Ведомость үшін жазуды сипаттау:

  1. var b : record

n : integer;

fa : packed array[1…20] of char;

ozenka : array[1…3] of integer

end;

  1. type ведомость = record

n : integer;

fa : packed array[1…20] of char;

ozenka : array[1…3] of integer

end;

var b : ведомость;

Жазудың элементтерінеоның типіндегі мәліметтерге мүмкін болатын әрекеттерді жасауға болады. Егер жазу элементінің типі бүтін болса, онда бүтін мәліметтер үшін мүмкін болған барлық амалдар орындалады. Қарастырылып отырған ведомосттағы жазудың элементтері үшін мынадай амалдар орындайық:

B жазудың n рет номеріне 3 мәнін меншіктейік:

b.n:=3

‡ш бағаның қосындысын табайық:

s:=b.ozenka[1]+b.ozenka[2]+b.ozenka[3]

Рет номеріне мән енгізейік:

read(b.n)

Біріктіру операторы. Бұл операторды қолданғанда жазудың аты біріктіру операторының тақырыбына шығарылады, ал төменгі блокта жазу элементтерінің аты қолданылады. Біріктіру операторының жалпы түрі:

with b do

begin

n:=3;

s:=ozenka[1]+ozenka[2]+ozenka[3];

read(n)

end;

1-есеп. Мына көпмүшеліктегі а айнымалысы бойынша ұқсас мүшелердің қосындысын табыңдар:

5a+17b-4a-3k+1p+9b-15r-4b

Көпмүшеліктің бір элементін жазу деп қарастырамыз, себебі ол әртүрлі типтегі мәліметтен – коэффициенттен (саннан) тұрады. Бағдарлама үшін мынадай белгілеу енгізейік: m1- көпмүшеліктің (жазудың) элементі; coef – коэффициент (жазу элементі); buk - әріп (жазу элементі); elem - жазудың типі; sum - коэффициенттер қосындысы.

program prog_1;

type elem = record

coef : integer;

bukwa : char;

end;

var m1 : elem;

m2 : elem;

sum : integer;

begin

sum:=0;

readln;

writeln('Көпмүшелікті енгізіңдер:');

while not eoln do

begin

read(m1.coef, m1.bukwa);

if m1.bukwa='a' then sum:=sum+m1.coef

end;

m2.coef:=sum;

m2.bukwa='a'

writeln('¦қсас мүшелердің қосындысы =', m2.coef:3, m2.bukwa)

end.

Жауабы:

Көпмүшелікті енгізіңдер

5а+17b-4а-3k+1p+9b-15r-4b

¦қсас мүшелердің қосындысы 9а

2-есеп. Бағдарламалау кружогына қатысатын оқушылар тізімі берілген. Беске оқитын және фамилиясы а әрпінен басталатын оқушылардың санын анықтаңдар.

Қағазбаева Гаућар 5 Асанов Мұрат 4

Тайсынова Айнұр 5 Беріков Асқар 5

Алтаев Асан 4 Төлегенов Абай 5

Сайынов Бахтияр 4 Телтаев Мұхит 5

Тізімнің әрбір жолында типтері әртүрлі мәліметтер болғандықтан, аты tizim болатын және екі алаңнан тұратын жазуды енгіземіз:

fa- фамилиясы, аты;

ball - бағасы (бүтін сан);

Бағдарламаның орындалу нәтижесі:

summa1 - 5 оқитын оқушылар саны;

simma 2- фамилиясы А әрпінен басталатын оқушылар саны.

program prog_2;

const m=15;

type t=record

fa : packed array[1…m] of char;

ball : integer;

end;

var tizim :t;

i, k : integer;

summa1 : integer;

summa 2 : integer;

n : integer;

begin

summa1:=0; summa2:=0;

writeln ('Оқушылар санын енгізіңдер :');

readln(n);

writeln('Кестені енгізіңдер: фамилиясы, аты, бағасы');

for і := 1 to n do

begin

for і:=1 to m do

read(tizim.fa[k]);

read(tizim.ball);

if tizim.ball = 5 then summa1:=summa1+1;

if tizim.fa[1] = 'a' then summa2 :=summa2+1;

end;

writeln('Беске оқитын оқушылардың саны=', summa1);

writeln('Фамилиясы А әрпінен басталатын оқушылардың саны=', summa2);

end.

Жауабы:

Оқушылар санын енгізіңдер:

8

Кестені енгізіңдер: фамилиясы, аты, бағасы

Қағазбаева Гаућар 5

Асанов Мұрат 4

Тайсынова Айнұр 5

Беріков Асқар 5

Алтаев Асан 4

Төлегенов Абай 4

Сайынов Бахтияр 5

Телтаев Мұхит 5

Беске оқитын оқушылардың саны 6

Фамилиясы А әрпінен басталатын оқушылардың саны 2

3-есеп. Екі x=4+5i және y=8+7iкомплекс санның s қосындысын p көбейтіндісін табыңдар.

x+y=(4+8)+i(5+7);

x*y=(4*8-5*7)+i(8*5+4*7);

program prog_3;

type

complex=record

re, im : real;

end;

var x, y : complex;

s : complex;

p : complex;

begin

x.re:=4.0;

x.im:=5.0;

y.re:=8.0;

y.im:=7.0;

{ Қосындыны есептеу}

s.re:=x.re+y.re;

s.im:=x.im+y.im;

{Көбейтіндіні есептеу}

p.re:=x.re*y.re-x.im*y.im;

p.im:=y.re*x.im+x.im*y.re;

writeln('Екі комплекс санның қосындысы =', s.re, ' ', s.im);

writeln('Екі комплекс санның көбейтіндісі =', p.re, ' ', p.im);

readln;

end.

15-лекция.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]