на тему: Елементи та структура програми мови Паскаль
ПЛАН
1. Загальні відомості
2. Робота з масивами
3. Складання програм з використанням процедур та функцій
1. ЗАГАЛЬНІ ВІДОМОСТІ
Мова Паскаль - це вдалий компроміс між простотою і потужністю, ефективністю, лаконічністю і багатослів'ям. У ній вперше відображено концепції структурного програмування.
Мову програмування Паскаль розробив Ніклаус Вірт у Швейцарському технологічному інституті в Цюріху на базі мови Алгол - 60. Сьогодні її широко застосовують як засіб для вивчення програмування. Вона завоювала велику популярність, що можна пояснити такими чинниками.
По-перше, мову проектували з урахуванням простоти написання транслятора (тобто програми, яка перекладає текст з мови високого рівня машинною мовою). Невеликий обсяг трансляторів дає змогу детально їх описувати і добре документувати. По-друге, ця мова значно простіша, ніж близькі за можливостями мови.
Водночас, мова Паскаль дає змогу писати складні програми, її використовують у програмному забезпеченні персональних комп'ютерів, зокрема для створення системного програмного забезпечення.
Програма для комп'ютера. Записана мовою Паскаль. Як і багатьма іншими мовами, складається з двох основних головних частин: опис дії, які яку потрібно виконати, та опис даних, з якими оперують ці дії. Дії описують з допомогою операторів, а дані - за допомогою описів і визначень.
Поділяють програму на заголовок і блок програми. У заголовку наводять ім'я програми і перечислюють її параметри. Параметри є змінні, які містять аргументи - вхідні дані та результати обчислень. Блок складається з шести розділів розташований у такій послідовності:
Блок = розділ опису позначок;
Блок = розділ визначення сталих;
Блок = розділ опису змінних;
Блок = розділ опису процедур і функцій;
Блок = розділ операторів.
Згідно з синтаксисом мови Паскаль кожна програма починається символом program, після якого зазначають її ім'я. Далів круглих дужках можна наводити параметри програми (імена файлів, через які програма спілкується з зовнішнім середовищем - операційною системою; найчастіше для нескладних програм - це імена стандартних файлів inputoutput). Далі йде блок і закінчується програма крапкою.
Програма мовою Паскаль складається з лексем і символів - розділювачів. Лексеми Паскалю - це спеціальні символи, символи слова, імена, числа, рядки символів, позначки і дерективи.
Розділювачі. Символами - розділювачами вважають: програму, кінець рядка і коментар. Всередині лексем використання їх не допустиме, а між двома сусідніми іменами, термінальними словами або числами повинен бути хоча б один розділювач.
Коментар починається з символу { або ( * і закінчується символами } або * ) і може містити будь які символи, в тому числі кінець рядка за винятком } або * ). Для більшої наочності програми доцільно вживати прогалини, порожні рядки (символ, “кінець рядка”) і коментарі.
Спеціальні символи і зарезервовані слова.
Під час написання програм мовою Паскаль використовуються такі спеціальні символи: + - * / : = … ^ = ' < > < < = > > = ( ) [ ].
Зарезервовані слова - це program, begin, end, if, then, else, for та ін. Їх не можна застосовувати з іншою метою, наприклад, як імена. Вони є символами, а не послідовністю літер.
Імена. Для позначення змінних, сталих, типів, процедур, функцій використовують імена або ідентифікатори. Імена складаються з літер і цифр, однак першим символом повинна бути літера.
Числа. Числа у мові Паскаля використовують цілі та дійсні. Перед числом може стояти знак “+” або “-”. Дійсні числа записують з десятковою крапкою, з порядком, або із крапкою і порядком.
Рядки символів. Послідовність символів, узяту в поодинокі лапки, називають рядком символів. Символами можуть бути будь-які, якщо треба поставити апостроф, то його записують двічі: `f'`;'”`don”t'.
2. РОБОТА З МАСИВАМИ
Масив - це структурний тип даних, який складається із фіксованого числа елементів одного типу. Для звернення до елемента масиву необхідно вказати в квадратних дужках порядковий номер елемента А[4]. При описі масиву необхідно вказати його ім'я, вказати, в яких границях здійснюється нумерація елементів, вказавши початкове і кінцеве значення індексів, вказати також тип елементів.
Двовимірний масив - це прямокутна таблиця, яка складається із m рядків та n стовпців. Опис двовимірного масива можна здійснити задавши тип масиву або безпосередньо змінну типу масив.
Індивідуальне завдання.
Скласти програму на мові Pascal розв'язку даної задачі та виконання її на ЕОМ. Передбачивши виведення на очищений екран масивів у вигляді матриці та результатів обчислень, супроводивши їх необхідними поясненнями.
Задача 1.
Обчислити максимальне значення із добутку елементів кожного із стовпчиків масива К(6,4).
Задача 2.
Знайти найбільший та найменший елементи масиву А(5,5) та поміняти їх місцями. Вивести масив порядках.
Задача 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
3. СКЛАДАННЯ ПРОГРАМ З ВИКОРИСТАННЯМ ПРОЦЕДУР ТА ФУНКЦІЙ
Підпрограма - це пойменована, логічно закінчена група операторів, яку можна викликати для виконання довільну кількість разів з різних місць програми.
В мові Pascal в ролі підпрограм використовуються процедури і функції. Функція представляє собою групу операторів, в результаті виконання яких обчислюється одне значення, що присвоюється значенню функції.
Опис функції здійснюється за допомогою ключового слова FUNCTION ім'я, а в дужках змінні.
Процедура на відміну від функції може повертати в програму одне, декілька або не повертати жодного значення. В заголовку після ключового слова PROCEDURE ім'я, а в дужках змінні зі своїми описами.
Індивідуальне завдання.
Скласти програму на мові Pascal розв'язку даної задачі та виконання її на ЕОМ. Передбачивши виведення на очищений екран результатів обчислень, супроводивши їх необхідними поясненнями.
Задача 1.
Дано масив С(5,4) . Зформувати новий масив К, кожний елемент якого дорівнює відповідному елементу масива С, поділеному на факторіал суми його індексів. Надрукувати масив К по рядках, підрахувавши кількість його елементів, значення яких меньше одиниці.
Задача 2.
Знайти суму від'ємних елементів та середнє значення додатніх елементів масивів: L (6), B (5), H(7) цілих чисел, використовуючи процедури.
Задача 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);