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

1. Процедуралар

Паскаль тілінде подпрограмманың (ПП) екі түрі – процедура және функция анықталған. Кез-келген пп жалпы программа сияқты құрылымға ие.

ПП шақырғанда негізгі программаның орындалуы уақытша тоқтайды да, орындалу реті пп беріледі. ПП орындалып болған соң, басқару негізгі программаға қайта оралады.

Процедура мен функция арасындағы негізгі ерекшелік мынада: процедура қандай да бір әрекеттер тізбегін орындайды да, жұмыс нәтижесін негізгі программаға бермейді. Ал функция әрекеттерді орындайды және нәтижені негізгі программаға береді. Мысалы, функцияны былай м:= min(х, у) шақыру негізгі программаға екі санның кішісін мән ретінде береді және ол мән м айнымалысына меншіктеледі.

Кез-келген программа, негізгі программада немесе басқа ПП шақырылмай тұрып, алдын-ала сипатталуы тиіс. ПП пайдаланылатын барлық айнымалылар не глобальды, яғни олар негізгі программада сипатталып, сол программада және барлық ПП қолдануға болады; не локальды, яғни ПП ішінде сипатталады да, тек сол ПП ғана қолданылады.

Негізгі программа мен ПП арасында ақпарат алмасу глобальды айнымалылардың көмегімен орындалады.

ПП өзінің локальды айнымалыларымен аттас емес кез-келген глобальды айнымалыларды тікелей пайдалануға болады.

Процедураны сипаттау:

Procedure <Процедура аты>(<формальды параметрлер тізімі>);

1-есеп. Т матрицасының элементтерін енгізетін және жауапқа шығаратын процедура жазыңдар.

program prog_2;

const u = 100;

var n, m : integer;

t : array[1..u, 1..u] of integer;

procedure tab_in(var p, k : integer);

var i, j : integer;

begin

for i := 1 to p do begin

for j := 1 to k do begin

write('T[', i, ', ', j, ']=');

read(T[i, j]) end;

writeln end

end;

procedure tab_out(var p, k : integer);

var i, j : integer;

begin

for i:= 1 to p do begin

for j:= 1 to k do write(T[i, j] : 6);

writeln end

end;

begin

writeln('Матрица өлшемін енгізіңдер n x m');

write('n='); read(n);

write('m='); read(m);

tab_in(n, m);

writeln('матрица', n, 'x', m);

tab_out(n, m)

end.

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

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

2. Матрица элементтерін енгізу үшін tab in процедурасын сипаттаймыз;

3. Матрица элементтерін енгізу үшін tab out процедурасын сипаттаймыз;

4. Матрицаның жодары мен бағандарын анықтайтын n және m натурал сандарын енгіземіз;

5. Фактілі параметрлері n және m болатын tab_in(n, m) процедурасын шақырамыз;

6. Фактілі параметрлері және болатын tab_out(n, m) процедурасын шақырамыз;

7. Бағдарлама жұмысын аяқтаймыз.

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

1.tab_in процедурасында:

T- енгізілетін матрица (глобальды айнымалы);

i, j - циклдің параметрлері (локальды айнымалылар);

2. tab_out процедурасында:

t – енгізілетін матрица (глобальды айнымалы);

i, j - циклдің параметрлері (локальды айнымалылар);

3. Негізгі бағдарламада:

T – енгізілетін матрица (глобальды айнымалы);

n, m - матрица өлшемі.

2-есеп. Символдардан тұратын жол берілген. Осы жолдағы қатар тұрған символдардың бірнеше рет қайталанғандарын жоятын процедура жазыңдар.

program prog_3;

var s: string; p: integer;

procedure sim;

var i: integer;

str : string;

begin

str := s[1];

for i:= 2 to l do

if s[i]<>s[i-1] then str := str+s[1];

s := str

end;

begin

writeln('Символдар жолын енгізіңдер');

readln(s);

p :=length(s);

sim;

writeln(s)

end.

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

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

2. Жолдарды өңдеу үшін sim процедурасын сипаттаймыз.

3. s жолын енгіземіз.

4. sim процедурасын шақырамыз.

5. Бағдарлама жұмысын аяқтаймыз.

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

Sim процедурасында:

s-енгізілетін жол (глобальды айнымалы);

i- циклдің параметрі (локальды айнымалылар);

str- аралық жолдық шама (локальды айнымалылар).

Негізгі программада:

s- енгізілетін жол (глобальды айнымалы);

l- жол ұзындығы (глобальды айнымалы),

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