аяқталу шартын тексередi. Егер х=999 болса, цикл аяқталады, until-ден кейiнгi
оператор орындалады. Ол оператор
writeln (‘сандардың қосындысы=’,Sum); нәтиженi шығарады.
3-мысал:
21
20
20
...
4
3
3
3
2
2
2
1
сан қатарының қосындысын табу.
Шешуi: Берiлген есепте параметрi 1-ден 20-ға дейiн 1 қадаммен өзгеретiн (бөлшектің алымы)
цикл құрған дұрыс. Бөлімінде алымы мен оған келесі санның көбейтіндісі жазылады. Егер
алымын і деп белгілесек, бөлімі і ∙ (і+1) түрінде болады.
program kosyndy;
var i:byte; s : real;
begin
s:=0;
for i:=1 to 20 do
s:=s+i/(i*(i+1));
{ цикл денесi }
write (‘
қосынды =’,s); writeln(y); readln;
end.
4-мысал: 10-нан 99-ға дейiнгi сандардың арасынан цифрларының қосындысы n-ге
тең сандарды табу. (0
Шешуi: Мынадай айнымалыларды белгiлеймiз.
n- берiлген сан; p1- санның ондық разрядты цифрасы;
p2- санның бiрлiк разрядты цифрасы;
s- берiлген санның цифрларының қосындысы;
k -iзделiндi сан.
Program san_kosyndy;
var k,n,p1,p2,s : integer;
begin
writeln (‘бүтiн сан енгiз’); readln (n); бүтiн санды енгiземiз
for k:=10 to 99 do 10-нан 99-ға дейiнгi сандарды қарастырамыз
begin цикл денесiнiң басы
p1:=k div 10;
p2:=k mod 10; бiрiншi, екiншi цифраны табамыз
s:=p1+p2;
if s=n then writeln (k); егер қосынды n-ге тең болса,
end; берiлген k санын шығарамыз
readln;
end.
Сұрақтар
1. Цикл дегенiмiз не?
2. Циклдi қолдануға мысалдар келтiр.
3. Параметрлi қайталану қай кезде қолданылады?
4. Параметр деген не?
5. Параметрлi қайталанудың жазылу форматы.
6. For операторының орындалуын түсiндiр.
7. Цикл денес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н (ЕКОЕ)
табуға болады. Формуласы: ЕКОЕ(х,у) = х*у/ ЕҮОБ(х,у).
№8 зертханалық жұмыс Жолдар
Жол дегеніміз – ұзындығы 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)
болса,
нәтижесі бос символ;