Заняття №3.
Розробка та виконання програм на мові Pascal.
Мета: систематизація знань, формування вмінь і навичок, розробки та виконання на ЕОМ найпростіших програм на мові Pascal.
Теоретичні відомості.
Програма на мові Pascal складається:
розділ оголошень; розділ текстів процедур і функцій; розділ основного блоку. Розділ оголошеньprogram заголовок програми:
{ $…} глобальні директиви компілятора:
uses підключаємі бібліотеки:
label розділ оголошення глобальних міток:
const розділ оголошення глобальних констант:
type розділ оголошення глобальних типів:
var розділ оголошення глобальних змінних:
Розділ текстів процедур і функційprocedure (function)
label розділ оголошення локальних міток:
const розділ оголошення локальних констант:
type розділ оголошення локальних типів:
var розділ оголошення локальних змінних:
begin основний блок процедури або функції:
end;
Розділ основного блоку програми.
begin основний блок програми:
end.
Програми діляться на прості(лінійні), розгалужені та циклічні. В простих програмах відсутні будь-які перевірки умов та використовуються лінійні оператори. В розгалужених можуть бути оператори умовного та безумовного переходу.
Умовні:
скорочена форма IF умова THEN опер.
повна форма IF умова THEN опер.1 ELSE опер. 2
Оператор безумовного переходу – GOTO «мітка».
Оператор множинного вибору:
CASE вираз OF
мітка1: опер. 1;
мітка2: опер. 2;
END;
Розрізняють три способи організації циклів:
цикл з параметром (FOR .. TO .. DO);
цикл з післяумовою(REPEAT UNTIL);
цикл з передумовою(WHILE .. DO).
Індивідуальне завдання.
Варіант №3.
Скласти та виконати на ЕОМ програми розв’язування слідуючих задач:
Задача 1.
Обчислити та вивести на очищений екран з К-ї позиції L-го рядка в форматованому вигляді значення вихідних даних та результатів обчислення виразу:
Обчислити значення виразу на ЕОМ для значень:
A=-6, b=6.4, c=8.85, k=20, l=10
Задача 2.
Обчислити значення даної функції, використовуючи оператори IF_THEN, IF_THEN_ELSE (два варіанти програми):
В
Задача 3.
Обчислити та вивести на екран в стовпчик таблицю значень функції:
Для значень Х із проміжку Х=[-3,5] з кроком h=1.2
С
Задача 1:
program zanattia3;
uses crt;
const
k=20;
l=10;
a=-6;
b=6.4;
c=8.85;
var
f:real;
begin
clrscr;
f:=(exp(a)+2*ln(b+c))/(arctan(b))+a*b;
gotoxy(k,l);
textcolor(2);
write('Вiдповiдь : ');
textcolor(3);
write(f:7:5);
textcolor(14);
write(' при а=-6, в=6.4, с=8.85');
end.
Р Е З У Л Ь Т А Т И Р О Б О Т И П Р О Г Р А М И :
______________________________________________________________________________
Вiдповiдь : -34.54943 при а=-6, в=6.4, с=8.85
______________________________________________________________________________
Задача 2:
program zanattia3_variant1;
uses crt;
const
a=-2.3;
b=-8;
t1=-4.5;
t2=1.2e-3;
t3=4.3;
var
y,t:real;
function obch(t:real):real;
begin
if t>3 then obch:=exp(t)/ln(t);
if t<-3 then obch:=exp(a)+a*b;
if ((t<=3) and (t>=-3)) then obch:=sin(t)/cos(t)+sqrt(a*b+b);
end;
begin
clrscr;
t:=t1;
y:=obch(t);
writeln('при t=',t:7:3,' вiдповiдь : ',y:7:3);
t:=t2;
y:=obch(t);
writeln('при t=',t:7:3,' вiдповiдь : ',y:7:3);
t:=t3;
y:=obch(t);
writeln('при t=',t:7:3,' вiдповiдь : ',y:7:3);
end.
Р Е З У Л Ь Т А Т И Р О Б О Т И П Р О Г Р А М И :
______________________________________________________________________________
при t= -4.500 вiдповiдь : 18.500
при t= 0.001 вiдповiдь : 3.226
при t= 4.300 вiдповiдь : 50.527
______________________________________________________________________________
program zanattia3_variant2;
uses crt;
const
a=-2.3;
b=-8;
t1=-4.5;
t2=1.2e-3;
t3=4.3;
var
y,t:real;
function obch(t:real):real;
begin
if t>3 then obch:=exp(t)/ln(t) else
if t<-3 then obch:=exp(a)+a*b else obch:=sin(t)/cos(t)+sqrt(a*b+b);
end;
begin
clrscr;
t:=t1;
y:=obch(t);
writeln('при t=',t:7:3,' вiдповiдь : ',y:7:3);
t:=t2;
y:=obch(t);
writeln('при t=',t:7:3,' вiдповiдь : ',y:7:3);
t:=t3;
y:=obch(t);
writeln('при t=',t:7:3,' вiдповiдь : ',y:7:3);
end.
Р Е З У Л Ь Т А Т И Р О Б О Т И П Р О Г Р А М И :
______________________________________________________________________________
при t= -4.500 вiдповiдь : 18.500
при t= 0.001 вiдповiдь : 3.226
при t= 4.300 вiдповiдь : 50.527
______________________________________________________________________________
Задача 3:
program zanattia3_variant1;
uses crt;
var
y:real;
x:real;
h:real;
begin
clrscr;
x:=-3;
h:=1.2;
repeat
y:=2*sqr(x-1)+3;
writeln(' y=',y:7:5,' при x=',x:7:5);
x:=x+h;
until x>5;
end.
Р Е З У Л Ь Т А Т И Р О Б О Т И П Р О Г Р А М И :
______________________________________________________________________________
y=35.00000 при x=-3.00000
y=18.68000 при x=-1.80000
y=8.12000 при x=-0.60000
y=3.32000 при x=0.60000
y=4.28000 при x=1.80000
y=11.00000 при x=3.00000
y=23.48000 при x=4.20000
______________________________________________________________________________
program zanattia3_variant2;
uses crt;
var
y:real;
x:real;
h:real;
begin
clrscr;
x:=-3;
h:=1.2;
while x<5 do begin
y:=2*sqr(x-1)+3;
writeln(' y=',y:7:5,' при x=',x:7:5);
x:=x+h;
end;
end.
Р Е З У Л Ь Т А Т И Р О Б О Т И П Р О Г Р А М И :
______________________________________________________________________________
y=35.00000 при x=-3.00000
y=18.68000 при x=-1.80000
y=8.12000 при x=-0.60000
y=3.32000 при x=0.60000
y=4.28000 при x=1.80000
y=11.00000 при x=3.00000
y=23.48000 при x=4.20000
Висновок: закріпив основні навички роботи з усіми видами циклів, умов, рівнянь та математичнимх функцій в Torbo Pascal, виконав всі завдання по розробці програм з циклами та розгалудженнями, які надає мова Pascal.
Заняття №4.
Робота з масивами.
Мета: систематизація та поглиблення знань, формування вмінь і навичок, розробки програм обробки масивів.
Теоретичні відомості.
Масив – це структурний тип даних, який складається із фіксованого числа елементів одного типу. Для звернення до елемента масиву необхідно вказати в квадратних дужках порядковий номер елемента А[4]. При описі масиву необхідно вказати його ім’я, вказати, в яких границях здійснюється нумерація елементів, вказавши початкове і кінцеве значення індексів, вказати також тип елементів.
Двовимірний масив – це прямокутна таблиця, яка складається із m рядків та n стовпців. Опис двовимірного масива можна здійснити задавши тип масиву або безпосередньо змінну типу масив.
Індивідуальне завдання.
Варіант №15.
Скласти програму на мові Pascal розв’язку даної задачі та виконання її на ЕОМ. Передбачивши виведення на очищений екран масивів у вигляді матриці та результатів обчислень, супроводивши їх необхідними поясненнями. Задача 1. Обчислити максимальне значення із добутку елементів кожного із стовпчиків масива К(6,4).Задача 1:
program masiv_1;
uses
crt;
var
k:array [1..6,1..4] of integer;
i,j,max:integer;
dob:array [1..4] of real;
begin
clrscr;
for i:=1 to 6 do
for j:=1 to 4 do begin
write('Введiть елемент K[',i,',',j,']=');
readln(k[i,j]);
end;
for j:=1 to 4 do begin
dob[j]:=1;
for i:=1 to 6 do dob[j]:=dob[j]*k[i,j];
end;
max:=1;
for j:=1 to 4 do if dob[max]<dob[j] then max:=j;
for i:=1 to 6 do begin
for j:=1 to 4 do write(k[i,j],' ');
writeln;
end;
for j:=1 to 4 do write(dob[j]:3:1,' ');
writeln;
write('Максимальний добуток в стовпцi з номером ',max);
writeln(' i дорiвнюї ',dob[max]:3:1);
end.
Р Е З У Л Ь Т А Т И О Б Ч И С Л Е Н Ь П Р О Г Р А М И :
22 3 3 3
4 5 6 7
3 3 3 32
2 -6 -5 4
-7 3 2 0
2 3 4 5
-7392.0 -2430.0 -2160.0 0.0
Максимальний добуток в стовпцi з номером 4 i дорiвнюї 0.0
Задача 2:
program masiv_2;
uses
crt;
var
a:array [1..5,1..5] of integer;
i,j,max1,max2,min1,min2:integer;
temp:integer;
begin
clrscr;
for i:=1 to 5 do
for j:=1 to 5 do begin
write('Введiть елемент A[',i,',',j,']=');
readln(a[i,j]);
end;
max1:=1;
min1:=1;
max2:=1;
min2:=1;
for i:=1 to 5 do
for j:=1 to 5 do begin
if a[max1,max2]<a[i,j] then begin
max1:=i;
max2:=j;
end;
if a[min1,min2]>a[i,j] then begin
min1:=i;
min2:=j;
end;
end;
clrscr;
writeln('Вихiдний масив:');
for i:=1 to 5 do begin
for j:=1 to 5 do write(a[i,j],' ');
writeln;
end;
temp:=a[max1,max2];
a[max1,max2]:=a[min1,min2];
a[min1,min2]:=temp;
writeln('Перетворений масив:');
for i:=1 to 5 do begin
for j:=1 to 5 do write(a[i,j],' ');
writeln;
end;
end.
Р Е З У Л Ь Т А Т И О Б Ч И С Л Е Н Ь П Р О Г Р А М И :
Вихiдний масив:
1 2 3 4 5
6 7 8 9 2
5 3 -3 -6 2
11 4 -7 3 2
8 9 2 2 3
Перетворений масив:
1 2 3 4 5
6 7 8 9 2
5 3 -3 -6 2
-7 4 11 3 2
8 9 2 2 3
Висновок:на практичній роботі я систематизував знання, вміння та навички по роботі з масивами, як двомірними, так і одномірними, навчився працювати з матрицями та операціями з ними.
Заняття №5.
Складання програм з використанням процедур та функцій.
Мета: систематизація та поглиблення знань, вмінь і навичок, розробки програм з використанням процедур та функцій.
Теоретичні відомості.
Підпрограма – це пойменована, логічно закінчена група операторів, яку можна викликати для виконання довільну кількість разів з різних місць програми.
В мові Pascal в ролі підпрограм використовуються процедури і функції. Функція представляє собою групу операторів, в результаті виконання яких обчислюється одне значення, що присвоюється значенню функції.
Опис функції здійснюється за допомогою ключового слова FUNCTION ім’я, а в дужках змінні.
Процедура на відміну від функції може повертати в програму одне, декілька або не повертати жодного значення. В заголовку після ключового слова PROCEDURE ім’я, а в дужках змінні зі своїми описами.
Індивідуальне завдання.
Варіант №13.
Скласти програму на мові Pascal розв’язку даної задачі та виконання її на ЕОМ. Передбачивши виведення на очищений екран результатів обчислень, супроводивши їх необхідними поясненнями.Дано масив С(5,4) . Зформувати новий масив К, кожний елемент якого дорівнює відповідному елементу масива С, поділеному на факторіал суми його індексів. Надрукувати масив К по рядках, підрахувавши кількість його елементів, значення яких меньше одиниці.
Задача 1:
program var_1_1;
uses crt;
var
c,k:array [1..5,1..4] of real;
i,j:integer;
m:byte;
function facktorial(x:integer):real;
var
i:integer;
facktorial1:real;
begin
facktorial1:=1;
if i<=1 then facktorial:=1 else begin
for i:=1 to x do facktorial1:=facktorial1*i;
facktorial:=facktorial1;
end;
end;
begin
clrscr;
writeln('Введiть елементи масива:');
writeln;
for i:=1 to 5 do
for j:=1 to 4 do begin
write('Елемент [',i,',',j,']=');
readln(c[i,j]);
end;
m:=0;
clrscr;
for i:=1 to 5 do begin
for j:=1 to 4 do begin
k[i,j]:=c[i,j]/facktorial(i+j);
if k[i,j]<1 then m:=m+1;
write(k[i,j]:7:5,' ');
end;
writeln;
end;
end.
РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ :
0.50000 0.33333 0.16667 -0.04167
0.66667 0.12500 -0.01667 0.00556
0.20833 -0.01667 -0.00417 0.00119
0.05833 0.01250 0.00417 0.00005
0.00417 -0.00099 0.00005 0.00000
Задача 2:
program var_1_2;
uses crt;
var
l:array [1..7] of integer;
b:array [1..6] of integer;
h:array [1..8] of integer;
v:integer;
s:real;
procedure masiv(var x:array of integer;kol:integer;var vid:integer;var ser:real);
var
i:integer;
begin
clrscr;
vid:=0;
ser:=0;
writeln('Введiть елементи масива :');
writeln;
for i:=1 to kol do begin
write('Елемент x[',i,']=');
readln(x[i]);
if x[i]<0 then vid:=vid+1 else ser:=ser+x[i];
end;
ser:=ser/kol;
end;
begin
masiv(l,6,v,s);
writeln('Вiдемних елементiв: ',v);
writeln('Середне арифметичне суми додатнiх елементiв: ',s);
repeat until keypressed;
masiv(b,5,v,s);
writeln('Вiдемних елементiв: ',v);
writeln('Середне арифметичне суми додатнiх елементiв: ',s);
repeat until keypressed;
repeat until keypressed;
masiv(h,7,v,s);
writeln('Вiдемних елементiв: ',v);
writeln('Середне арифметичне суми додатнiх елементiв: ',s);
end.
РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ :
Введiть елементи масива :
Елемент x[1]=2
Елемент x[2]=-2
Елемент x[3]=-3
Елемент x[4]=5
Елемент x[5]=3
Елемент x[6]=4
Вiдемних елементiв: 2
Середне арифметичне суми додатнiх елементiв: 2.33
Введiть елементи масива :
Елемент x[1]=23
Елемент x[2]=-3
Елемент x[3]=-4
Елемент x[4]=2
Елемент x[5]=8
Вiдемних елементiв: 2
Середне арифметичне суми додатнiх елементiв: 6.60
Введiть елементи масива :
Елемент x[1]=4
Елемент x[2]=5
Елемент x[3]=-6
Елемент x[4]=3
Елемент x[5]=2
Елемент x[6]=-7
Елемент x[7]=0
Вiдемних елементiв: 2
Середне арифметичне суми додатнiх елементiв: 2.00
Висновок:на практичній роботі я систематизував та поглибив вміння та навички по роботі з функціями і процедурами у власних програмах, які дуже легко використовувати завдяки процедурам та функціям.