А.Тайманов атындағы №34 мектеп-гимназиясы
Облыстық жас мамандар мектебі
Тақырыбы: «Паскаль программалау тілі тарауы бойынша есептер шығару»
Өткізген: Мурзагалиева Г.Ш.
Орал қаласы
Сабақтың тақырыбы: Паскаль программалау тілі тарауы бойынша есептер шығару.
Сабақтың мақсаты: Оқушылардың Паскаль программалау тілі тарауы бойынша білімдерін нақтылау, бекітіу;
Көрнекілігі: Презентация. Топшамалар.
Сабақ барысы:
ұйымдастыру;
үй тапсырмасын тексеру; тарау бойынша тест. 5 сұрақ. Компьютерде орындау.
Еске түсіру.
Паскаль программалау тілінде программа құрылымы:
program ex_1; (аты)
var x, y, z: real; (сипаттау бөлімі)
begin
(операторлар бөлімі)
end.
«Шартты оператор»
Тармақталу алгоритмін ұйымдастыру үшін шартты оператор қолданылады: Бұл оператордың жазылуы:
if <шарт> then <1 оператор> else <2 оператор> ;
қысқарған түрі:
if <шарт> then <1 оператор> ;
Мысалы:
1.
[pic] [pic] [pic]
есебін шешу программасын жазайық.
program ex_1;
var x, y, z: real;
begin
write(үш нақты санды енгіз:');
readln(x, y, z);
if x < 0 then x:= x*x*x*x else x:=x*x*x;
if y < 0 then y:= y*y*y*y else y:=y*y*y;
if z < 0 then z:= z*z*z*z else z:=z*z*z;
writeln(x:7:2, y:7:2, z:7:2)
end.
"Циклдік Оператор "
І. Шартты алдын ала тексеру.
While <шарт> do
Begin
<1 оператор;>
<2 оператор;>
...
<n оператор;>
End;
ІІ. Шартты соңынан тексеру.
Repeat
<1 оператор;>
<2 оператор;>
...
<n оператор;>
Until <шарт>;
ІІІ. Арифметикалық цикл немесе қайталану саны белгілі цикл.
For <айнымалы>:=min to max do <оператор>;
For <айнымалы>:=max downto min do <оператор>;
Program Pr1;
Var n, x: integer;
Begin
Write (‘элемент санын енгіз: ’); Readln (n);
While x <=n do
Begin
Writeln (x*x+x+17);
X:=x+1;
End;
End.
Program Pr2;
Var n, x: integer;
Begin
Write (‘элемент санын енгіз: ’); Readln (n);
Repeat
Writeln (x*x+x+17);
X:=x+1;
Until x>n;
End;
Program Pr3;
Var n, x: integer;
Begin
Write (‘элемент санын енгіз: ’); Readln (n);
For x:=0 to n do
Writeln (x*x+x+17);
End.
«Жиымдар»
Жиым – бұл бір атаумен белігілеп, біріктірілген біртекті реттелген элементер жиыны.
Ерекшеліктері:
Мысалдар:
Неге ұйымдастырамыз?
жиымның атын анықтау үшін
жиымның типін анықтау үшін
элементтерінің санын анықтау үшін
жадыдан орын бөлу үшін
Бүтін сандардың жиымы:
var A : array[ 1 .. 5 ] of integer ;
Констант арқылы өлшемін көрсету:
const N=5;
var A: array[1.. ] of integer;
"1": Перентақта арқылы 5 элементтен тұратын элементерді енгізіп, жиымның барлық элементердің орташа арифметикалық мәнін табыңдар.
Мысалы:
бес сан енгізіңдер:
4 15 3 10 14
орташа арифметикалық мәні: 9.200
"2": Пернетақтадан 5 элемент енгізіп, жиымның ең кіші элементін табыңдар.
Мысалы:
бес сан енгізіңдер :
4 15 3 10 14
Кіші мәні: 3
Символдық жиым жұмыстың қиындығы қандай?
Символдық жиым:
var B: array[1..N] of char;
Не қажет:
Символьдық жолдар
var s: string;
а
л
е
м
!
¤
¤
¤
¤
…
¤
¤
¤
Жолдың ұзындығы:
n := length ( s );
Мысалы: Символдық жолды пернетақтадан енгізіп, барлық "а" әріпін "б" әріпіне алмастыру керек.
program qq;
var s: string;
i: integer;
begin
writeln(‘жолды енгізіңдер');
readln(s);
for i:=1 to Length(s) do
if s[i] = 'а' then s[i] := 'б';
writeln(s);
end.
Есеп: Атын, әкесінің атын және фамилиясын енгізу. «фамилия-инициалы» форматына түрлендіру.
Мысал:
Атынды, әкеңнің атын және фамилияңды енгіз:
Алуа Данияровна Қуанова
Нәтиже:
Қуанова А.Д.
Алгоритм:
Бірінші бос орынды тауып, атын бөліп алу
Негізгі жолдан атты бос орынмен бірге өшіру
Бірінші бос орынды тауып алып әкесінің атын бөліп алу
Әкесінің атын өшіріп тастау
Фамилияны бірінші әріптермен біріктіру…
Мысал:
program qq;
var s, name, otch: string;
n: integer;
begin
writeln('Атыңды, әкеннің атын және тегіңді енгіз');
readln(s);
n := Pos(' ', s);
name := Copy(s, 1, n-1); { атты ерекшелеу }
Delete(s, 1, n);
n := Pos(' ', s);
otch := Copy(s, 1, n-1); {әкесінің атын қиып алу}
Delete(s, 1, n); {фамилия қалады }
s := s + ' ' + name[1] + '.' + otch[1] + '.';
writeln(s);
end.
Тапсырмалар:
№1. Массивтің теріс элементтерінің санын және оң элементтерінің көбейтіндісін табу керек.
Program _8;
var a:array[1..100,1..100] of integer;
j,i,k,p,n,s,m:integer;
begin
write('Жол санын еңгіз= '); readln(n);
write('қатар санын еңгіз= '); readln(m);
randomize;
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=random(9)+1;
write(a[i,j],' ');
end; writeln;end;
p:=1;k:=0;
for i:=1 to n do
for j:=1 to m do
if a[i,j]<0 then k:=k+1
else p:=p*a[i,j];
write ('k=',k,' p=',p);
readkey; end.
№2. A(5,5) массиві берілген. Матрицаның бас диагоналінің астындағы бөлігін мына түрде өзгерту керек: егер матрицаның осы бөліктегі A[i,j] элементі A[j,i] элементінен үлкен болса, онда осы екі элементтің қосындысының жартысына тең болатындай A[i,j] элементіне жаңа мән бер.
Program_;
type m=array[1..100,1..100] of real;
var A:m;procedure vvod(m,n:integer;var x:m);
var i,j: integer;
begin
writeln('массив элементтерін енгіз');
for i:=1 to m do
for j:=1 to n do
read(x[i,j]);
end;procedure mat(m,n:integer;var x:m);
var i,j: integer; t:real;
begin
writeln('өзгертілген A[i,j] матрицасы мына түрде болады');
for i:=1 to m do
for j:=1 to n do
if i>j then if x[i,j] > x[j,i] then x[i,j]:=(x[i,j]+x[j,i])/2;
for i:=1 to m do
for j:=1 to n do
write( A[i,j]:2:1,' '); end;
begin
vvod(5,5,A);
mat(5,5,A);
end.
№3. Матрицаның басты диоганалінің элементтерінің көбейтіндісін және оның санын есептеу керек.
Program _16;
uses crt;
var a:array[1..100,1..100] of integer;
p,n,k,m:integer;
i,j:longint;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to n do begin
a[i,j]:=random(9)+1;
write(a[i,j]:n); end;
writeln; end;
writeln;
p:=1; m:=n;
for i:=1 to n-1 do begin
for j:=1 to m-1 do begin
p:=p*a[i,j];
k:=k+1; end;
m:=m-1; end;
writeln('p=',p,' k=',k);
readkey;
end.
3. Жиымның жұп элементтерінің қосындысын және ондай элементердің санын табыңдар.
Program Ex_4;
Var A : Array[1..100] Of Integer;
N, i, S, K : Integer;
begin
Write('Жиым элементерінің саны? '); ReadLn(N);
For I := 1 To N Do
Begin
Write(' A[', I, '] '); ReadLn(A[I]);
End;
s:=0; k:=0;
For I := 1 To N do
if a[i] mod 2 = 0 then begin s:=s+a[i]; k:=k+1 end;
writeln('Қосынды ', s, '; саны ', k)
end.
Бекіту: Жоғарыдағы тапсырмаларда осы үш тақырыптағы операторлар түгел қолданылады. Практикалық жұмыстарды орындау.