2.9 Шартты Оператор. Жай Шарт.
Шартты көшу операторы.
Шартты көшу операторы, белгілі бір шарттардың орындалуына байланысты, операторлардың орындалу тәртібін өзгертіп отырады. Бұл операторларды екі түрде жазуға болады;
Толық түрі Толық түрі Паскаль тілінде
Егер шарт IF-THEN-ELSE
онда 1 -серия if A then B else
әйтпесе 2-серия жазылу үлгілері
бітті IF (шарт) THEN(оператор1 )ELSE(оператор 2)
Екі серияның біреуі ғана орындалады. Егер шарт сақаталатын болса, онда 1 - серияны, ал шарт орындалмаса, 2 - серияны орындау керек.
Қысқаша түрі Паскальда
егер шарт
онда серия
бітті
|
IF-THEN(қысқартылған түрі)
Жазылу үлгісі
IF(шарт) THEN(оператор)
Бұл жағдайда шарт сақталса, онда серия орындалады, ал қарсы жағдайда серияны аттап өтеді.
|
Мұндағы IF (егер), THEN (онда), ELSE (әйтпесе) - қызметші сөздер
ELSE сөзінің алдындағы оператордың соңына нүктелі үтір қойылмайды.
Толық түрде берілген IF опрераторының орындалуында шарттың мәні ақиқат болса, басқару бірінші операторға, жалған болса, екінші операторға өтеді. Қысқартылған түрде берілген IF опрераторының орындалуында шарттың мәні ақиқат болса, басқару операторға, жалған болса, оны аттап өтеді.
2.1 мысал. Функцияның мәнін есептеу керек.
х2+3, x<1
y=
sinx +4, x>=1
Программа:
program man;
(*функцияның мәнін есептеу*)
var x, y: real;
begin write(‘x=?’);
readln(x);
if x<1 then y:=sqr(x)+3
else y:=sin(x)+4;
write(‘ y’,y:6:3)
end.
2.2. мысал. Экранға екі санның үлкенін шығару керек.
program Esep–1;
var x, y: Integer;
begin
Writeln ('екі санды енгіз');
{ бос орын тастап екі бүтін сан енгіземіз}
readln (x,y);
If x>y then writeln (x)
{ егер х, у-тен үлкен болса, онда х-ті шығарамыз }
else writeln (y)
{ әйтпесе y – ті шығарамыз}
readln; end.
2.3-мысал. Клавиатурадан енгізілген сандар (0;5) интервалына жататындығын не жатпайтыныдығын анықтайтын программа жазайық.
program Esep–2;
var x: integer;
begin
writeln (‘x санын енгіз ‘);
readln (x);
if (x>0 and x <5)
then writeln (x, ’(0,5) – ге жатады ‘)
else writeln (x, ‘ (0,5) – ге жатады’)
end.
2.4-мысал. a*b-(a-b)*a/b өрнегінің мәнін 0.01 дәлдікпен студенттің есептегенін дұрыстығын тексеру керек.
program urnek;
a,b,c,t,z:real;
begin
writeln(‘ а мен b енгіз ’)
readln(a);
readln(b);
c:=a*b-(a-b)*a/b;
t:=round(c*100)/100;
write (‘0.01 дәлдікпен есептелген мән, студенттің есептегені=?’);
readln(z);
if z=t then write(‘жарайсың дұрыс!’);
else write (‘дұрыс емес!’);
end.
Мұндағы t - өрнек мәні 0.01 - ге дейінгі дәлдікпен меншіктелінетін айнымалы (мәнді есептеу мен дәлдіктеуді машина орындайды);
Z-студенттің 0.01 дәлдікпен дайындаған жауабы.
2.10 Құрама оператор
Кейде then, else қызметші сөздерінен соң бірнеше операторлар енгізілуі мүмкін. Паскальда осы сияқты бір серияда орындалатын операторлар тізбегі бір оператор түрінде қарастырылады да, оны құрама оператор деп атайды. Құрама оператор да Begin, END операторлық жақшаларына алынып жазылады және END -тен соң нүкте қойылады.
Мысалы:
begin x:=5.2; y:=3*x+7
write(‘y=”;y’)
end.
2.5-мысал ах2+вх +с=0 теңдеуінің нақты облыстан алынған түбірлерін табу керек.
Программа:
program kvi :
uses crt;
var a,в,с,d,х1,х2: real;
begin clrscr: write (‘а,в,с=’);
readen (а,в,с); d:=в*в-4*а*c
if d<0 then write (‘нақты облыста түбір жоқ’)
else begin
x1:= (-в+sqr(d))/(2*а);
x2:= (-в-sqr (d))/(2*a);
write (‘х1=’,х1:5:3,’ x2=’, x2:5:3)
end.
Программа then - нен соң екі оператор енгізілгендіктен, олар begin-end операторлық жақшаларына алынады.
2.11 Құрама шарттар
2.6 мысал. I облыста М(х,у) нүктесі радиусы 5-ке тең дөңгелекте жататынын анықтайтын тексері керек.
Программа:
Program D1 ;
uses crt ;
var x, y: real;
begin clrscr;
writeln (‘x, y=?’); readln(x,y);
if (x*x+y*y =25) and (x=0)
and (y=0) then write (‘ true’)
else write (‘false’)
end.
2.7 мысал. Функцияның мәндерін есептеу алгоритмін жазыңдар.
õ2 ,óõ2
y= ó4, õ3, ó3
õ3, ó2õ-1
program мән uses crt;
var x,y: real;
begin clrscr;
read(x);
if x<2.0
then y:=x*x
else if x<3.0
then y:=4.0
else y:=2*(x-1);
write (y=,y)
end .
2.8 мысал. Қайсыбір айнымалы литерлік шама латын алфавитінің әрпі екендігін анықтайтын программа жазыңдар.
Программа:
program латын;
var sim: char;
begin
read(sim); (*Char типі реттелгендіктен, шарт былай жазылады*)
if (Sim >=A) and (Sim<=Z)
then
write (‘Sim’,Sim,’латын алфавитінің әрпі’ )
else write (символ латын алфатиінің әрпі емес)
end.
Есептер шығару барысында екі емес, көптеген варианттарды қарастыруға тура келеді. Мұны бірнеше шартты операторды пайдалану арқылы іске асырылады. Мұндай жағдайда then және else қызметші сөздерінен кейін жаңа шартты оператор жазылады.
2.9- мысал. а, в,с бүтін сандары берілген. Егер авс болса, онда барлық сандарды олардың квадраттарымен, егер а>в>с болса, онда олардың әрқайсысының ішіндегі үлкенімен алмастырыңдар, қарсы жағдайда әрқайсысының таңбасын өзертіңіз.
Шешуі:
Есептердің шартын төмендегідей етіп жазып көрейік:
егер авс болса а:= а2, в:=в2, с:=с2,
егер а>в>с болса, онда а:=с, в:=с;
басқа жағдайда а:=-а, в:= в, с:= -с
program Esep;
var а,в,с: integer;
begin
writeln (‘а,в, с сандарын енгіз);
readln (a,в,с);
if (aв) and (вс)
then begin
a:= sqr (a); в: = sqr (в); c: = sqr (c)
end.
else if (а>в) and (в>c)
then begin a: =c; в:=c end;
else begin a:=-a; в:=- в; c:=-c end;
writeln ( a:3; в:3; c:3) ;
readln
end.
Ескерту. Бірінің ішінде бірі орналастырылған операторлар қысқартылған шартты оператор болса ( біздің қарастырылған мысалдағыдай), онда шартты операторлардың арасындағы шекара туралы түсінбестік тууы мүмкін. Мұндай жағдайда қызметші сөз ең else жақын if -ке тиісті деп есептеу керек.
ҚОРЫТЫНДЫ
Паскаль тілінде программа жазғанда мынадай мәселелерді ескеру керек:
1. Басқа тілдердегідей Паскаль тілінде де, "қызметші" сөздер бар. Мысалы: begin, end т.б. Олардың атын басқа мақсаттарға пайдалануға болмайды. Оларды басқа символдарды
Паскаль тілінде программа жазғанда мынадай мәселелерді ескеру керек:
Басқа тілдердегідей Паскаль тілінде де "қызметші сөздер " бар. Мысалы: begin, end т.б. Олардың атын басқа мақсаттарға пайдалануға болмайды. Оларды басқа символдардан ажырату үшін ерекше әріптермен жазады, ал жазбаша программа құрған кезде олардың астын сызып отырады.
Паскальдың кейбір варианттарында бас әріптер мен кіші әріптер өзара ажыратылмайды. Мысалы: А, а әріптері бірдей таңба болып есептеледі.
Программаның көпшілігінде айнымалылар, константалар, процедуралар бір-бірімен бірінші алты немесе сегіз символ арқылы ажыратылады. Сондықтан ұзындығы 6-8 символдан көп айнымалылардың, константалардың, процедуралардың қажеті шамалы.
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР
Лапчик М.М. «Вычисления. Алгоритмизация. Программирование» Москва «Просвещение» 1988г.
Гусева А.Н. « Учимся информатике: задачи и методы их решения» Диалог - МИФИ 1988 г.
И.А. Бабушкин, Н.А. Бушмелева, С.М. Окулов, С.Ю. Черных «Практикум по Турбо Паскалю» Выпуск 1,2,3 № 44,46,48 1997 г.
Н. Культин «Турбо Паскаль для начинающих» БХВ – Петербург 2000 г.
С.А. Абрамов, Г.Г. Гнездилова, Е.Н. Капустина, М.И. Селюн «Задачи по программированию» Москва «Наука» 1988 г.
Н. Культин «С++ в примерах и задачах » БХВ – Петербург 2000 г.
ҚОСЫМША
uses crt;
var i,j,k,l,m,n,h,g1,g2:integer;
s,x1,x2,x3,d:real;
a:array[1..9,1..10] of integer;
x:array[1..9] of real;
begin
clrscr;
l:=0; h:=0;
writeln('****************Kramer****************');
writeln('*****Vvedite razmer massiva*****');
write('n= ');
readln(n);
write('m= ');
readln(m);
writeln('*****Vvedite massiv *****');
for i:=1 to n do
for j:=1 to m do begin
write('a[',i,',',j,']= ');
readln(a[i,j]);
end;
clrscr;
writeln('*****Dano massiv*****');
for i:=1 to n do begin
for j:=1 to m do
write(a[i,j]:4);
writeln;
end;
writeln('**********************');
writeln;
for i:=1 to n-1 do begin
l:=l+1;h:=h+1; g1:=-a[l,h];
for j:=h to n-1 do begin
g2:=a[j+1,i];
for k:=l to m do
a[j+1,k]:=a[i,k]*g2+a[j+1,k]*g1;
end;
end;
{for i:=1 to n do begin
for j:=1 to m do
write(a[i,j]:4);
writeln;
end;}
writeln;
writeln;
writeln;
x[m-1]:=a[n,m]/a[n,n];
for i:=n-1 downto 1 do begin
s:=0;
for j:=i+1 to n do
s:=s+a[i,j]*x[j];
x[i]:=(a[i,m]-s)/a[i,i];
end;
for i:= 1 to n do
writeln('x[',i,']= ',x[i]:4:2);
readln;
end.0>1>
Достарыңызбен бөлісу: |