4. Еңгізу, шығару процедуралары
read(<айнымалылар тізімі>)
Клавиатурадан еңгізілген айнымалылар пробелдармен бөлінеді.
readln(<айнымалылар тізімі >)
Айнымалыларды жаңа жолдан еңгізу.
Мәліметтерді экранға шығару үшін write(<список вывода>) стандартты процедура қолданылады.
Экранға константалар, айнымалылар, өрнектер, шығару форматтары шығарылуы мүмкін.
writeln(<шығару тізімі >) – жаңа жолдан шығару.
Мысалы, (а=2, в=3, с=4):
read(<а,в,с>);
2 3 4¿
readln(<а,в,с>)
2¿
3¿
4¿
writeln операторын параметрсіз қолдану бос жол жасайды.
5. Паскаль тіліндегі программа құрылымы:
program < программа аты>;
label <белгілерді атау>;
const < константаларды атау>;
type < типовтерду атау>;
var < айнымалыларды атау>;
procedure(Function)> (<ішкі программаларды атау>);
begin
< операторлар бөлімі >;
end.
Программада операторлар бөлімі ғана міндетті түрде болуға тиісті.
Мысал. Өрнек мәнін есептеу:
У =
program exam;
var a,b,c,у:real;
begin
read(a,b,c);
y:=(b+sqrt(sqr(b)+4*а*c))/ (2*a)-exp(3*ln(a))*c+exp(-2*ln(b));
writeln(‘Өрнек мәні тең ‘, y:4:2);
end.
Программаның жұмыс жасау протоколы:
2 3 4¿
29.54
- Мәліметтер типі концепциясы: идентификациялауының логикалық және машиналық деңгейлері. Мәліметтердің жәй типтері: идентификациялау.
Программалау тілдерінде мәліметер типтері меншіктеуге болатын мәндердің жиынын және олармен орындалатын амалдар жиынын анықтайды.
Мәліметтердің жәй (скалярлық) типтерін қарастырып шығайық. Оларға жататындар: бүтін, нақты,
символьдық, логикалық, аталмалы и интервальдық типтер. Жәй типтер ретті және нақты болып бөлінеді.
Ретті типтердің, реттеуге болатын шектеулі санды өздеріне меншіктелетін мәндері болады.
Мәліметтердің жәй типтері
|
Ретті
|
Нақты
|
1.Бүтін:
- integer
- shortint
- longint
- byte
- word
|
1. Real
2. Double
3. Extended
4. Comp
|
2.логикалық
|
|
3.Символьды
|
|
4. Аталмалы
|
|
5. Интервальныйды
|
|
- Негізгі алгоритмдік конструкциялары: жалғасу, басқаруды беру.
Тармақталу командасы: if < шарт > then <оператор1> else <оператор2>; - тармақталу командасының толық түрі.
if < шарт > then <оператор1> ; - тармақталу командасының қысқа түрі.
then және else сөздерінен кейін тағыда құрама командалар орналасуы мүмкін.
Мысалы:
1.if < шарт > then
if < шарт > then <оператор1> else <оператор2>
else <оператор>;
Мұнда әрбір else өзіне жақын орналасқан if қызметші сөзіне қатысты болады..
2. if < шарт > then begin <оператор1; оператор2;… ;операторn> end
else begin< оператор1; оператор2; …; операторn>;
Басқаруды берудің синтаксикалық диаграммалары. Шартсыз көшу.
Циклдан шығуға мәжбүр немесе программаның басқа жеріне көшу керек болған жағдайда циклдан
мәжбүрлі түрде шығу қолданылады. Ол үшін шартсыз көшу операторы қолданылады. ШАРСЫЗ КӨШУ ОПЕРАТОРЫНЫҢ ЖАЗЫЛУЫНДА белгі пайдаланамыз. Белгі алдын ала программаның атау бөлімінде аталады.
Бос оператор : мысалы а:
Басқаруды программа бойымен жоғары немесе төмен бағытпен ұйымдастыруға болады.
Көшу ережелері.
Басқаруды беру үшін арнайы стандартты процедуралары жиі қолданылады.
exit, halt, breac, continue.
- Негізгі алгоритмдік конструкциялар: шарты алдын ала тексерілетін цикл, шарты кейін тексерілетін цикл, параметрі бар цикл.
Қайталауды ұйымдастыру үшін циклдің үш операторы қолданылады:
for циклі (қайталану саны белгілі);
while циклі (шарт алдын ала тесеріледі);
repeat repeat (шарт кейін тексеріледі).
For циклдің счетчигі болады, счетчиктің бастапқы және соңғы мәндері болады.
downto қызметші сөзі көмегімен циклдің кері айналуын ұйымдастыруға болады.
Цикл счетчигінің типі кез келген ретті тип болуы мүмкін. Счетчик автоматтырылған түрде
succ немесе pred ( цикл кері айналу жағдайында) функцияларын пайдаланады.
Егер циклдің параметрінің соңғы мәні оның бастапқы мәнінен үлкен болса, цикл бірде бір орындалмайды.
While циклі.
Цикл басындағы шарт мәні true болғанша дейін , цикл денесі орындалады. Сондықтан, цикл денесінде шарт мініне байланысты, яғни оны өзгерте алатын, оператор орналасуы тиісті, әйтпесе шексіз цикл пайда болуы мүмкін. Циклдің логикалық шарты циклға кірер алдында тексеріледі.
Талапқа сай мәліметтерді (бүтін оң сандарды) еңгізуді дұрыс ұйымдастырылуына мысал:
write(‘n-ді еңгіз’);
readln(n);
while n<0 do
begin(‘n-ді еңгіз’ );
readln(n);
end.
Repeat циклді қолдану программаның неғұрлым тиімді түрін береді:
repeat
write(‘n-ді еңгіз’’);
readln(n);
until n>=o;
- Типтер сәкестілілігі.
Айнымалылардың типтерінің атқаратын функцияларын тағы бір қайталап шығайық:
- айнымалының ішкі сипатталылуының ұзындығын тағайындау;
-айнымалыға программада қолдануға болатын әрекеттерді бақылау;
- айнымалыға меншіктеуге болатын мәндердің жиынын анықтау.
Турбо Паскальда типтердің жасырынды түрлендірулері қолданылмайды. Типі real орнегі үшін ғана real тип орнына integer типін қолдануға болады.
Мысалы
var х : integer;
y : real;
begin y : = x + 2; синтаксикалық дұрыс оператор
x : = y + 2; синтаксикалық қате оператор
Типтерді меншіктеу ережелері:
Егер а1 айнымалы типі type 1;
a2 айнымалы типі type 2; болса,
Онда а1: = a2 операторы қолданылуы мүмкін, егер:
type 1 және type 2 - бірдей тип болса;
type 1 құрамына type 2 интервал ретінде кіретін болса;
type 1 - нақты, ал type 2 - бүтін тип болса.
ТР-ға типтерді түрлендіру құралдар еңгізелген. Бірақ оларды анық түрде атап қолдану кажет. Яғни, Паскаль тілінің қандай құралы негізінде қандайда бір тип өзге типке түрлендірлетінін атап шығу керек. Ол үшін кейбір іштей құрылған функцияларды пайдалануға болады.
Мысалы, round және trune функциялары real типін бүтін типке айналдыру үшін қолданылады.
Round функциясы real типін санға ең жақын бүтін санға дейін дөңгелектейді; ал trunс real типін
оның бөлшек бөлігін алып тастап оны бүтін саңға айналдырады.
Мысал. var х : integer; y : real;
begin x : = round ( y/ x); дұрыс
x : = y/x ; қате
ORD функциясы типі char айнымалыларды типі integer; CHR функциясы керісінше integer типін char типіне түрлендіреді.
word орнына BYTE ,
Longint орнына integer немесе shortint,
integer орнына shortint қолдануға болады.
Мысалы.
var a : integer; x, y : real;
begin a : = a + 2; диапазоннан шығу
longint (a): = a + 2 . типті өзгеру соңынан мән диапазон шекарасында
Мысал. Program Gode _ of _ Char;
символды клавиатурадан оқып, экранға символдың өзін жіне оның кодын шығарады
var ch : Char ; символ
begin
write ‘символ еңгізіңіз : ’
Readln ( ch ); символа оқу
writeln ( ch, ‘ = ‘, ord ( ch ) ) ; түрлендіру, шығару
Анық түрде тұрлендіруге мысал:
var x : real ;
begin x : = 1 div 2; санның бөлшек бөлігін алып тастау
- Мәліметтердің структураланған түрлері: массивтер. Сызықты массив: логикалық және машиналық деңгейлері. Синтаксикалық диаграммалары.
Массивтер.
Сызықты массив.
Массив – бір типті элементтердің реттелген жиынтығы. Массив элементтерінің номерлері индекс деп аталады.
Белгілеулер: а, vector, matrix, w_days – массивтер аттары;
а [1] – а массивінің бірінші элементі,
а [5] – индексі 5-ке тең а матрицаның элементі;
vector[3] – vector матрицаның индксі 3 тең элементі;
Массивтер программада тип ретінде немесе айнымалы болып аталады. Массивті айнымалы түрінде атауға мысал:
const
N=9;
var
a:array[1..n] of integer; { 9 саннан тұратын массив }
c:array [1..10] of char; { 10 саннан тұратын массив }
deist: array [1..7] of real; { 7 нақты сандарынан тұратын массив }
begin
Программада массив элементтерін еңгізу және шығаруға мысал:
program exam;
const
k=7;
var
m:array[1..k] of char;
d: array [5..15] of integer;
b:array [1..k] of real;
i: integer;
begin
{ m массив элементтерін еңгізу - символдарды};
for i:=1 to k do
readln(m[i]);
{ d массив элементтерін еңгізу – бүтін сандар};
for i=1 to т do
begin
write(‘ Еңгізіңіз d[‘, I, ’]:’);
readln(d[i]);
end;
{ в массив элементтерін экранға шығару – нақты сандар};
for i:=1 to k do
writeln(‘в[‘,I,’]=’, b[i];
end.
- Екі өлшемді массив.
Екі өлшемді массив – тіктөртбұрышты матрицаны сақтайтын мәліметтер құрылымы.
Матрицада әрбір элемент қиылысуында орналасқан жолдың және бағана номерлерімен анықталады.
Екі өлшемді массивтің программада аталуы:
program dv_mas;
var a: array [1..5, 1..10] of real;
begin
Екі өлшемді массивті еңгізу және шығару:
program v_viv;
var i: integer; a: array[1..5,1..10] of integer;
begin
for i : = 1 to 10 do
for j ; = 1 to 5 do еңгізу
readln (a [i, j] )
for i : = 1 to 10 do begin
for j : = 1 to 5 do шығару
write ( a [i, j] : 4 )
writeln
end
end.
- Жолдық типті айнымалыларды атау, еңгізу, шығару.
Жолдық типті атаудың синтаксикалық диаграммасы
ұзындығыыина
идентификатор
String типтің аталуында жолдың ұзындығы 1-ден 255-ке дейінгі кез келген бүтін мәнді қабылдай алады. Жол ұзындығы берілмеген жағдайда максимальды ұзындығы, яғни 255 алынады. String(т) айнымалы үшін жадының n+1 байты бөлінеді.
Жолдың әрбір элементі массив элементі сияқты өнделеді.
Мысал program exam;
var s: string[9];
begin
readln(s); {жолды еңгізу}
writeln(s[5]); {жолдың 5-ші элементін шығару}
readln(i);
writeln(s[i]); { жолдың і-ші элементін шығару }
end.
Жодарды өндеудің стандартты алгоритмдері:
Мысал 1. Берілген жолдың ішкі жолын көшіру:
program exam;
var s: string[9];
podstr:string[9]; i,count:integer;
begin
readln(s); {жолды еңгізу}
podstr:=copy(s,i,count); { ұзындығы count, аты podstr ішкі жолды ішкі жолды
{i-ші позициясынан бастап көшіру}
writeln(‘Қажетті ішкі жол:’, podstr); { podstr ішкі жолды шығару}
end.
Мысал 2. Берілген s1 жолына i позициясынан бастап s2 жолын еңгізу. Жолдың ұзындығын табу.
program vstavka;
var s1,s2:string;
l,i:integer;
begin
readln(i);
insert(s1,s2,i); { s1 жолына i позициясынан бастап s2 жолын еңгізу }
l:=length(s1); {өзгертілген s1 жолдың ұзындығын табу.
s1}
writeln(‘өзгертілген жол’, s1); writeln(‘s1 жолдың ұзындығы:, l);
end.
- Жиындар.
Паскаль тілінде программалауда жиын типі – көмекші структура. Ол шартта операторында, шарттар көп жағдайа қолданылады.
Жиын тиі Паскаль тілінде былай аталады:
Бірінші
-set қызметші сөзі жазылады
- одан кейін of
- базалық тип, яғни жиын эелементтерінің типі.
Базалық тип ретінде мәндер саны 255 аспайтын кез келген реттік тип алынуы мүмкін. Мысалы, мынадаай атаулары мүмкін:
type
days = (mon, tue, wed, thu, fri, sat, sun);
digit = set of char;
var
work_d, d_week, d:set of days;
b:set of byte;
c1::digit;
day:days;
Жиындарды анықтау:: work_d:=[mon,thu..fri];
d_week:=[mon, thu, wed..sat,sun];
c1:= [‘1’,’2’, ‘0’];
- Жазулар. Стандартты алгоритмдер мысалдары..
Паскальда тұрлі типті элементтерден құралған кұрделі типті мәліметтер еркше орын алады. Ұзындығы 255-тен аспайтын мұндай берілгендердің әрқайсысын жазу деп , жазу құрайтын элементтерді жазу өрістері деп атайды. Мысалы, бір студент жөнінде мәлімет берілген болсын:
Султанов Алим ,ер, қазақ, 1975 жылы туған, 10115 – студент шифрі.
Паскальда бұл мәлімет бес өрістен тұратын жазу ретінде аталады. Жазу мынадай ретпен аталады:
type деген қызметші сөз;
типтің аты ;
record деген қызметші сөз;
өрістердің аттары мен типтері жазылады;
end деген қызметші сөз.
Жазудың сипатталу үлгісі:
Type student = record
Shifr:integer;
Fio: string;
Pol: string;
Ylt : string;
Year: integer;
end;
var st1,st2:student;
Мұнда біз типтері жазу болатын st1,st2 айнымалыларын атап шықтық.
Тағыда қандай мысал келтіре аласыңыз . Тақтаға жазып Паскаль тілінде атаңыз.
Мысалы st1 жазудың өрістері мынадай турде жазылыды:
St1:shifr, st1:fio, st1:pol,st1:ylt,st1:year;
St2:shifr,st2:fio,..,st2:year.
Ал, мысалы St1 жазуын жадыға ендіру операторының жазылуы мынадай:
Read(st1.shifr,st1.fio,st1.pol,st1.ylt,st1.year) немесе былайда жазуға да болады:
Read(st1.shifr); Read(st1.fio); Read(st1.pol); Read(st1.ylt); Read(st1.year).
Және былайда жазуға болады: st1.shifr:=12345; st1.fio:=’Муканов’, st1.ylt:=’қазақ’.
Тип атауы student болатын жоғарыдағы жазуды жадыға ендіру варианттарын жазып шығайық.
program jazu;
type student = record
shifr : integer;
fio : string;
adres : string;
year: integer;
end;
var st1:student;
begin
st1.shifr:=11010;
st1.fio:=’Султанов Аман Тулеевич’;
st1.adres:=’г.Уральск’
st1.year:=1945;
write(st1.fio,st1.year); end.
Мында жазудың аты қайталана береді, бұл қолайсыздықтан құтұлу үшін арнайы with (қосу,біріктіру) операторын пайдалануға болады. Оператордың жазылу үлгісі:
with < жазу атауы> do
begin
{Жазу өрістерінің белгілемелері}
{еңгізілген операторлары}
end;
Енді біздің программаны мынадай түрде жазуға болады:
program jazu;
type student = record
shifr : integer;
fio : string;
adres : string;
year: integer;
end;
var st1:student;
begin
with st1 do
begin
readln fio);
readln(year);
readln(adres);
Writeln( ‘Фамилия’, fio)’
writeln(‘ Туған жылы’, year);
writeln(‘Адрес,’adres);
end;
end.
Есеп. Оқушылардың жастары бойынша олардың тізіміін жасайтын программа жазайық.
Program tizim;
Scool = record
Fam:string[10];
Voz:5..20;
Klas: 1..11;
Var masscool: array [1..10] of scool;
I,n,nn,mm:integer;
Begin
Readln(n);
For i:=1 to n do
Begin
With masscool[i] do
begin
Readln(fam);
Radln(voz);
Readln(klas)
End;
End;
Writeln(‘Минимальны және максимальды жасты еңгіз’);
Read(nn,mm);
For i:=1 to n do
If (masscool[i].voz>=nn) and (masscool[i].voz<=mm) then
Begin
Writeln(‘Фамилия: ‘,masscool[i].fam:10);
Writeln(‘Класс’ ,masscool[i].klas:3);
End;
Repear until keypressed; end.
- Файлдық айнымалылар: типтері, файлдарды өндеу инструкциялары.
Турбо Паскаль тілі программаның өндеген нітижелерін компьютер дискіне тікелей программадан шығарып сақтауға жағдай жасайды. Паскаль программасында файл дегеніміз – бір типті мәліметтердің аталған структурасы. Файл элементтерінің саны шексіз деуге болады.
Кәдімгідей айнымалы сияқты файл программаның атаулар бөлімінде аталады. Файыл атауында оның файл элементтерінің типтері көрсетіледі.
Файылды атаудың жалпы форматы:
Идентификатор(ат): file of элементтер типі
Мысал: rez:file of char; { символдар файлы }
koeff:file of real; {нақты сандар файлы }
f:file of integer; {бүтін сандыфайл }
Анықтама: типтері символды (char ) болатын элементтерінен тұратын файл тексттік файл деп аталады.
Яғни rez: file of char орнына
rez:text; деп жазуға болады.
Басқа айнымалылармен салыстырғанда файылдық айнымалыны атау файылдың тек қана типін береді. Ал файылға мәндерді еңгізу үшін немесе мәліметтерді файылдан оқу үшін, файылдың атын беру керек. Ол үшін assign процедура қолданылады. assign процедура арқылы файылдық айнымалы дискідегі нақты файылмен байланыстырылады. Мысалы; rez файылдық айнымалы дискідегі нақты ехаm.txt файылмен байланысьырылады.
assign процедурасы былай ұйымдастырылады:
assign(var rex:text; файл_аты:string);
Файл аты MS DOS ережелері бойынша жазылады және толық болуы мүмкін.
Мысалы:
assign(f,á:\rez.txt’);
assign(f,’\student\ivanov\korni.txt’);
Файылға шығару инструкциясы
write (writeln) процедура қолданылады.
Мысалы, write(f,Теңдеу түбірлері:’, x1,x2); Мұндаь файлдық айнымалының типі text.
Бірақ мәліметтерді файылға шығару үшін біріншіден файылды еңгізу үшін ашу қажет.
Файылға шығару үші ашу.
Мәліметтерді файлға шығару алдында, файылды алдын ала ашу қажет; бұл файл кіру файлы деп аталады. ФАЙЫЛДЫ оған мәліметтерді жазу үшін ашудың мынадай режимдері болады:
- қайта жазу (жаңа файл жасау немесе дискідегіфайл үстінен жаңа файылды жазу); rewrite процедурасы қолданылады;
- дискідегі файлға мәліметтерді қосу; append процедурасы қолданылады;
- Ішкі программалар: процедуралар және функциялар.
Процедура ұғымы:
Көмекші алгоритмдер программалау тілінде процедура деп аталады. Процедура арнайы процедураны шақыру инструкцияся арқылы шақырылады.
Сонымен программаның өз аты бар және арнайы локальды аттар жиыны бар бөлігі процедура деп аталады. Процедура программаның кез келген орнына өзінің аты бойынша кез келген рет шақырыла алады.
Ішшкі программа программаны структуралау құралы болып табылады. Структуралау идеясы мынада тұрады:
программа өте көп операторлардан тұрмауға қажет;
оны жүзеге асыру үшін программа өзбеттік және қандай да бір өз рөлін атқаратын бөліктерге , яғни ішкі программаларға бөлінеді бөлінеді
Ішкі программалар құрамына басқа программалар кіруі мүмкін, яғна ішкі программалар бірі бірінің ішіне кіруі мүмкін.
Негізгі программа және программист құрған процедура мынадай түрде өзара байланысты:
Негізгі программа Процедура
program P1;
var
begin
… …. …
MyPr();
… …. ….
end.
end.
procedure MyPr;
var
begin
… … …
end.
Негізгі программа орындалу барысында процедураны шақыру инструкциясы кездескен болса, негізгі программаның орындалуы тоқтатылады да кездескен инструкция орындла басталады.
Процедураның барлық инструкциялары орындалып болғаннан кейін, негізгі программаның орындалуы процедураны шақыру инструкциясынан кейінгі инструкциясынан бастап жалғасады
6.2. Программада процедураны атау:
Процедураның жалпы түрі:
procedure Имя (var параметр1:тип1; var параметр2:тип2; …;
Var параметр к:типк);
v
Program A;
x, y, z
ar
{ процедураның ішкі айнымалыларын атау}
begin
{ процедураның инструкциялары};
end;
15. Тақырып: Айнымалыларды қолдану облысы.
А программасында В процедурасы аталған;
В ішкі программа Е процедурасын қамтиды.
Аталған айнымалылардың қолданылу облысы:
- А программадағы х, у, z айнымалыларды барлық ішкі программаларында қолдануға болады ;
Procedure E;
k, l
- В процедураның m,n айнымалыларын тек қана В процедуранығ өзінде және Е процедурасында қолдануға болады; - k, l айнымалылары тек қана Е процедураның өзінде ғана қолданылады.
Ішкі программада аталған аттар бұл ішкі программасы үшін локальды болып табылады, ал оның құрамына кіретін ішкі програмамалары үшін глобальды деп аталады.
Негізгі программада аьалған айнымалылар барлық оның құрамына кіретін ішкі программалар үшін глабальды болып табылады.
Жоғарыда қарастырылған программада m,d айнымалылары – нақты параметрлар, ал n,c – формальды параметрлар.
Мысал. Мынадай процедура берілген:
procedure procnam(x,y:integer);
Begin
x:=4; y:=5;
writeln(x*y/2);
end;
Бұл процедураны негізгі программадан әр түрлі әдістермен шақыруға болады;
1. Стандартный әдіс: procnam(f,k:integer); Мұнда f,k нақты параметрлер мәндері x,y формальды параметрларына беріледі .
2.жағдайдың болуы мүмкін: num:=5;
procname(num,4);
3. Нақты параметрлер мынадай түрде де ұйымдастырылуы мүмкін:
Например: num:=1; pow:=50;
procname(num, pow);
переменные num, pow – нақты параметрлар.
6. ЗЕРТХАНАЛЫҚ ЖҰМЫСТАРДЫҢ ЖОСПАРЫ
Алгоритмдер және олардың блок-сұлбалары
Қарапайым функциялар үшін Тьюринг машинасы
Қарапайым арифметикалық функциялардың примитивті есептелінетіндігі
Рекурсивті функциялар
Марковтың нормальды алгорифмдері
Бір формальдаудың қарапайым операцияларының басқа формальдаудың қарапайым опреацияларына көшетіндігі
Рекурсивті функциялардың номерлерінің қасиеттері
Рекурсивті функциялар туралы негізгі теоремалардың қолданылуы
Шешілмейтін алгоритмдік проблемалар
Рекурсивті және рекурсивті саналатын жиындардың қасиеттері
Рекурсивті саналатын жиындарға қолданылатын амалдыр
Жиындардың кетірілетіндігі
Креативті және продуктивті жиындар
Жай және максимальды жиындар
Райс-Шапиро теоремасы
ПӘНДІ ОҚЫТУ ЖӨНІНДЕ ӘДІСТЕМЕЛІК НҰСҚАУЛАР.
Лабораториялық жұмыс №1.
Тақырып: Тармақталу командасы. Цикл
«Информатика -9» Н.Ермеков щқулығындағы есептерді шешу алгоритмлерін құрыңыз. б.44-46, 50-51, б. 57, 63
Лабораториялық жұмыс №2.
Тақырып: Арифметикалық өрнектерді Паскаль тілінде жазу.
Өрнектерді Паскаль тілінде жазыңыз:
3с + b-2;
0>
Достарыңызбен бөлісу: |