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

1. Жолдар.

Жол деп мәндері Паскаль тіліндегі символдардан тұратын өрнекті айтамыз. Жолдық типтегі элементтер – бұл кездейсоқ символдардың шектеулі тізбегі, яғни char типіндегі элементтер болып табылады. Әрбір жолдың ұзындығы 0-ден 255 символға дейін бола алады. Жолдық типтегі тұрақтылар тырнақшалардың арасына жазылады. Мысалы, ‘Астана’, ‘Кентау институты’, ‘’ – ұзындығы нөлге тең бос жол, ‘ ’ – бір бос орын символынан тұратын жол.

Жолдың типін сипаттау үшін string сөзі қолданылады:

var <айнымалы> : string[n];

Ал char сөзі символдық айнымалыларды сипаттау үшін пайдаланылатыны бізге белгілі.

2. Стандартты функциялар

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

concat(s1, s2)-s1 жолын s2 жолымен біріктіру;

copy(s, i, j) - s жолының І-ші позициясынан бастап j символды көшіру үшін қиып алу;

length(s) - s жолының ұзындығы;

pos(t, s) - t cөзі s жолдың нешінші позициясынан бастап орналасқандығын анықтайды;

delete(s, i, j)-s жолының І-ші позициясынан бастап j символды өшіру;

insert(t, s, i) - t сөзін s жолдың І-ші позициясынан бастап орналастыру;

str(n, s) – n санын s жолдық айнымалыға айналдырады;

val(s, x, cod)- s жолын x екілік санына айналдырады, мұндағы cod дұрыс емес символдың коды.

1-есеп. Символдардан тұратын жол берілген. Сөз берілген. Жолдағы осы сөзді өшіріңдер.

program prog_1;

var sr, wd : string;

i, l : integer;

m : set of char;

begin

m := [‘.’, ‘,’,‘!’, ‘:’, ‘;’, ‘?’, ‘-‘, ‘ ’];

writeln(‘Сөз енгізіңдер’); readln(wd);

wrd := concat(‘ ’, wd);

sr:= ‘ ‘ +sr;

writeln(‘Текст енгізіңдер’); readln(sr);

l := length(wd);

repeat

i := pos(wd, sr);

If (i<>0) and (sr[i+l] in m) then delete(sr, i, l);

until i = 0;

writeln(sr)

end.

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

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

2. m жиынының мәндерін береміз.

3. wd айнымалысына сөз енгіземіз, оны жалғаудан ажырату үшін алдына бос орын қосамыз, сөздің ұзындығын табамыз.

4. Жолды енгіземіз.

5. Циклдің көмегімен жолдың ішінен енгізілген wd сөзді іздейміз.

6. i>0 мәні осы wd сөзінің бірінші символының номерін береді.

7. Егер осындай сөз кездессе оны жолдан қиып аламыз.

8. Экранға өзгертілген тексті шығарамыз.

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

i - wd сөзінің алғашқы кездесетін позициясының номері;

l - сөздің ұзындығы;

sr -текст жолы;

wd-сөз;

m - тыныс белгілер жиынтығы мен бос орын.

2-есеп. Нүктемен аяқталатын символдық жол берілген. Бос орындармен бөлінген сөздердің ең ұзыны мен ең қысқасының ұзындығын анықтаңдар.

program prog_2;

var s1 : string;

max, min, i, j : integer;

begin

writeln(‘Нүктемен аяқталатын символдық текст енгізіңдер‘);

readln(s1);

j:=pos(‘.’, s1);

s1 := copy(s1, 1, j-1);

max := 0; min := 256;

repeat

i := pos(‘ ‘, s1);

delete(s1, 1, i);

if i-1>max then max := i-1;

if (i-1<min) and (i>1) then min := i-1;

until i = 0;

writeln(‘max = ‘, max);

writeln(‘min = ‘, min)

end.

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

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

2. s1 жолын енгіземіз.

3. Текстегі бірінші нүктенің орнын анықтаймыз, егер нүкте бар болса сол нүктеден кейін орналасқан текстті s1-ден қиып тастаймыз.

4. Бос орындарды іздеуді ұйымдастырамыз.

5. Бос орын табылған соң одан кейін орналасқан сөзді келесі бос орнымен қоса қиып аламыз да оның ұзындығын max және min мәндерімен салыстырамыз.

6. Нәтижені экранға шығарамыз.

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

i- бос орынға сәйкес келетін позициясының номері;

j- алғашқы нүктенің орны;

s1- текст жолы;

max – ең үлкен сөздің ұзындығы;

min – ең кіші сөздің ұзындығы.

3-есеп. Нүктемен аяқталатын символдық жол берілген. Бос орындармен бөлінген сөздердің ішінде болмағанда бір «е» әрпі кездесетіндігін анықтаңдар.

Берілген есепті шешуде сөздердің саны «е» әрпінің санымен тең емес екендігін ескеріңдер, себебі әрбір сөзде «е» әріптерінің саны әртүрлі болуы мүмкін.

program prog_4;

var s1 : string;

k, i, j : integer;

begin.

writeln(‘Нүктемен аяқталатын текст енгізіңдер‘);

readln(s1);

j := pos(‘.’, s1);

s1 :=copy(s1, 1, j-1);

k :=0;

repeat

j := pos(‘e’, s1); i:= pos(‘ ’, s1);

if (i>j) and (j<>0) then begin

k := k+1;

delete(s1, 1, i);

end

else delete(s1, 1, j-1);

until i = 0;

writeln(‘Сөздердің саны k =’, k);

end.

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

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

2. s1 жолын енгіземіз.

3. Текстегі бірінші нүктенің орнын анықтаймыз, егер нүкте бар болса сол нүктеге дейінгі тексті s1-ден қиып аламыз және бос орын қосамыз.

4. Жолдағы бос орындарды іздеуді ұйымдастырамыз.

5. Бос орын мен «е» әрпі табылған соң олардың орнын салыстырамыз.

6. Егер берілген сөзде «е» бар болса, онда сөзді келесі бос орынмен қоса қиып аламыз, санауды бірге арттырамыз.

7. Егер жолдың басынан «е»-ге дейін қандай-да бір сөз бар болса, онда «е»-ге дейінгі текстті қиямыз.

8. Нәтижені экранға шығарамыз.

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

i- бос орынға сәйкес келетін позициясының номері;

j-алғашқы нүктенің, сонан соң «е» әрпінің орны;

k- сөздердің саны;

s1- текст жолы.

4-есеп. Нүктемен аяқталатын символдық жол берілген. Осы жолды экранға соңынан басына қарай шығарыңдар.

program prog_7;

var i, l : integer; s1 : string;

begin

writeln(' Нүктемен аяқталатын текст енгізіңдер');

readln(s1);

l:=length(s1);

for i :=l-1 downto 1 do

write(s1[i]);

writeln('.')

end.

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

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

2. s1 жолын енгіземіз және оның ұзындығын анықтаймыз.

3. Жолды соңынан басына қарай шығаратын цикл ұйымдастырамыз.

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

i- цикл айнымалысы;

l- жол ұзындығы;

s1 – текст жолы.

5-есеп. Студенттер фамилиялары тізімінен тұратын жол берілген. Осы тізімдегі ең ұзын фамилияны анықтаңдар.

program prog_8;

const n=10;

var a : array[1..n] of string[20];

k, i : integer;

b : string[20];

begin

for i:= 1 to n do

readln(a[i]);

b:=a[1];

k:=length(a[1]);

for i:=2 to n do

if k<length(a[i]) then begin

k :=length(a[i]);

b :=a[i]

end;

writeln(‘Ең ұзын фамилия =’, b);

wrieln(‘k=’, k)

end;

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

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

2. Фамилияларды енгіземіз.

3. Әрбір фамилияны массивтегі басқа фамилиялармен салыстыратын және ұзынын в айнымалысына меншіктейтін цикл ұйымдастырамыз.

4. Ең ұзын фамилияны және оның символдарының санын жауапқа шығарамыз.

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

n – фамилиялардың саны; a – бір өлшемді массив; i- цикл айнымалысы;

b - ең ұзын фамилия; k - ұзын фамилиядағы символдардың саны.

9-лекция. Көмекші программалар.

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