
- •Структура програми
- •Ідентифікатори.
- •Запис чисел на Pascal.
- •Додаткова інформація про оператор write (writeln)
- •3. Дано 3-й дійсні числа а,ь,с. Визначити, скільки серед них від'ємних.
- •Складений оператор.
- •Результати операцій над логічними даними:
- •Var ім 'я_масиву:аrrау[t1 ] of t2;
- •Var ім’я_масиву: ім'я_типу;
- •Var ім’я_мас:ім 'я_типу;
- •Процедури.
- •Структура процедури.
- •Параметри-значення та параметри-змінні.
- •Функції.
- •Відмінні особливості функції в порівнянні з процедурами:
- •Рекурсивні структури.
- •If умова then a;
- •If умова then a;
- •If умова then a;
- •Множини.
- •Var ім'я_запису: record
- •Var ім'я_запису:ім'я_типу;
- •Оператор приєднання.
- •With ім’я_запису do
- •Записи з варіантами.
- •Var ім'я_файлу: iм)я_типу; читання файлів.
- •Запис файлу.
- •Write(ім’я, параметри);
- •Читання та запис файлів.
- •Файлова система.
- •Фізичні файли.
- •Файлові типи.
- •Текстові файли.
- •Текст - орієнтовані процедури та функції.
- •Створення текстових файлів.
- •Операції введення-виведення текстових файлів.
- •Переваги типізованих файлів :
- •Безтипові файли.
- •Послідовний та прямий доступ до файлів.
- •Вказівники.
- •Зсилочнии тип.
- •Var p:pointer; (змінна — вказівник);
- •Операції розіменування.
- •Списки.
- •1. Зв'язне представлення з одним зв'язком.
- •2. Зв'язані представлення з двома зв'язками.
- •3В’язані списки.
- •Перегляд зв'язаного списку.
- •Списки властивостей.
- •Pascal – об’єктно-орієнтована мова.
- •Опис об’єкта: рядок
- •Розробка програм на мові тр з використанням мов Асемблера та с.
- •Підпрограма сортування методом обміну
- •Застосування механізму переривань
- •Лівий, правый: зв ’язок; дані: тип_даних;
Var ім’я_масиву: ім'я_типу;
Якщо в програмі кілька масивів мають один і той же тип, то змінюється лише розділ опису змінних.
Приклад :
Type mas=array[1.. 5]of integer;
Var A,B,C:mas;
Масиви A,B,C використовуються в розділі операторів програми, а тип масиву mas введений формально тільки у розділі опису і ніде у програмі не вказується і не використовується.
Упаковані масиви.
З метою економії пам'яті при використовуванні символьних даних в мові Паскаль введено поняття упакованого масиву. Елементи упакованого масиву зберігаються по 2 в 1 слові. Упакований масив символьних даних має слідуючий вигляд:
Туре ім 'я_типу=Packed Array[t1] of char;
У даному випадку перший елемент масиву приймає значення першого символу. Як і не упакований, упакований масив описують у розділі type:
Туре ім’я_muny=Packed Array[t1]of char;
Var ім’я_мас:ім 'я_типу;
Елементи упакованого масиву використовують у програмі так, як елементи неупакованого, тільки пам'ять для упакованого масиву виділяється меньше. Вважають, що символи рядку мають тип упакованого масиву:
Packed Array [1..N] of char; де N—довжина рядку.
Символьні константи можуть присвоюватися або порівнюватися з любими масивами, які мають такий самий опис. Упаковані масиви економлять місце у пам'яті, але збільшують час доступу до компонентів масиву. Для створення упакованного масиву використовують цикл.
Наприклад, формування масиву А символьних даних можливо виконати наступним чином:
І:=1;
While not eoln do
Begin
Read(A[i]);
I:=i+1;
End;
Масив А при цьому повинен бути описаний не більше ніж довжина рядку, що вводиться:
Var Packed Array[1. .N] of char;
В операторі циклу While можливо вказувати конкретну довжину рядку:
І<28 або КК.
До упакованих символьних масивів в мові Паскаль відносяться також рядки символів, які задаються або у розділі операторів або у розділі констант. Тип константи однозначно визначається її записом. Ми будемо об'являти цей тип під ім'ям STRING. Тип STRING не являється стандартним типом, його потрібно визначати шляхом об'явлення типів.
Операції відношення виконуються посимвольно зліва направо.
Наприклад: Ввести елементи масиву і роздрукувати їх. Масив визначений так:
\/ar K:PackedArray[-5.. 5] of char;
Program pr;
Var k:packed array[-5.. 5] of char;
I: integer;
Begin
Writeln(’Bведіть елементи масива') ;
For і: = -5 to 5 do
Read(k[i]);
For i: = -5 to 5 do
Writeln(k[i]);
End.
Приклад: ввести рядок символів не меньше 10 і не більше 50. Вияснити, скільки "? " з 5 символу по 20 і підрахувати кількість усіх символів,
program mas3;
const al=’?’;
b=5; с=20;
type mas=packed array [1..50] of char;
var a: mas;
x,i: integer;
begin
{введення і підрахунок символів рядка}
і: =0;
write ('вв символи рядка');
while not eoln do
begin
i:=i+1;
read(a[i]);
end;
if (i<10)or(I>50)then
WriteІп('введення не відповідає умові');
Writeln ('і=', і: 3);
х:=0;
for і: =b to c do
if a[i]=a1 then x:=x+1;
witeln(’x=’, x: 4);
end.
Оператор циклу while працює так: циклічна частина програми виконується до тих пір, поки в рядку символів не зустрінеться (знак Entera){умова NOT EOLN}. Після цього цикл закінчиться і управління передасться на підрахунок к-ті ?
У високих версіях мови Pascal є можливість Packed не вказувати, т.я. масиви символів автоматично упаковані.
Приклад: В масиві з 30 дійсних чисел визначити найбільший елемент.
Program рг;
Type a=array[1..30] of real;
Var mas :a; max: real; I: integer;
Begin
Writeln('Bведіть елементи масива');
For I: =1 to 30 do
Readln(MAS[I]);
Max:=MAS[1];
For I:=2 to 30 do
If MAS[I]>Max then Max: =Max[I];
Writeln('Max= ',Max:4;2);
End.
Приклад: Є одновимірний масив, який складається із п цілих чисел, роздрукувати їх у зворотньому порядку по 5 чисел у рядку.
Program lena;
var i,n,k: integer:
a: array[1…50] of integer;
begin
k:=0; (*k- кількість елементів в рядку*)
write ('Введіть кількість елементів масиву');
readln(n);
Writeln(’Введіть елементи масива');
For i:=1 to n do
read(a[i]);
for i:=n downto 1 do
begin
write (a [i] :4) ;
k:=k+l;
if k mod 5=0 then writeln;
end;
end.
Приклад: В масиві із 15 дійсних чисел найти найменший елемент, поміняти його місцями з останнім,
Program mas6;
var a: array [1...15] of integer;
іj: integer;
min, last, t: integer;
begin
Writeln('Введіть елементи масива');
for і: =1 to 15 do
read(a[i]);
min: =a[1];
for i: =2 to 15 do
if a[i] <min then
begin
min: =a[i];
t: =i;
end;
last: =a[15];
a[15]: =min;
a[t]: =last;
writeln;
for i: =1 to 15 do
writeln(a[i]:4);
end.
Багатовимірний масив.
До цих пір ми розглядали масиви, кожний елемент якого містить тільки один індекс. Такі масиви називаються одновимірними. В математиці часто використовують багатовимірні масиви, тобто масиви масивів. Особливо широке розповсюдження отримали двовимірні масиви, які називаються матрицями.
Наприклад: 3 4 8 9
7 16 1 5
6 23 17 2
Послідовність чисел написана в декілька рядків називається матрицею.
Дана матриця має розмір (3*4). Якщо весь масив позначити А, то кожний елемент масиву позначається двома індексами A[I,j]. Перший індекс рядка, другий - стовпчика. Можна описати:
Туре мат—array[1..3] of array[1. . 4] of integer;
Var а:мат;
Описується тип даних індексів від 1 до 3, а потім вказується
складний базовий тип, зокрема array [1 ..4] of integer;
Можна описати так:
Туре мат= аrrау[1..3, 1. .4]of integer;
Var а:мат;
Тут описується кожен тип індекса, потім вказується простий базовий тип елементів масиву integer.
Якщо в програмі необхідно виділити окремі блоки матриці, то необхідно ввести такий опис:
Type mas=array[1...4]of integer;
Мат=array[1.. 3]of mas;
Var a: mas;
b:мат;
Тут спочатку описується тип одного рядка, а потім через тип рядка тип всієї матриці.
Приклад: Які з проведених описів двовимірних масивів є неправильними і чому ?
Var a:array[1..5, 1..7] of real; - правильний
Var k: array[4,7] of integer; - неправильний тип індексу
Var p: array[1..6], [1..3] of real; -неправильний
Type mas =array[ 'b'..’f’, -3..3] of integer; - правильний
Type z=array['a'.. 'd'] — неправильний, так як не описаний тип eлементу.
Приклад: Дана матриця дійсних чисел B[I,J], де і вимірюється від 1 до З, j — від 1 до 5. Знайти добуток всіх елементів матриці.
Program амат1;
Var b: array[1., 3,1.. 5] of real;
i,j: integer;
p:real;
begin
p:=1;
for i: =1 to 3 do begin
for j: =1 to 5 do read(b[i,j]);
readln;
end;
for і: =1 to 3 do
for j:=1 to 5 do
p:=p*b[i,j];
writeln('p=’,p:8:2);
end.
Задача: є цілочисленний масив [4*4], впорядкувати масив по зростанню елементів першого стовбця.
Рrogram mat2;
var mas: array [1..4,1..4] of integer;
іJ,k,t: integer;
begin
writeln('Введіть матрицю');
for i: =1 to 4 do
begin
for j:=1 to 4 do
read(mas[i,j]);
readln;
end;
for i: =1 to 4 do
for j: =1 to 4 do
if mas[i,1]>mas[j, 1] then
for k:=1 to 4 do
begin
t: =mas[i,k];
mas[i,k]: =mas[j,k];
mas[j,k]: =t;
end;
for i: =1 to 4 do
begin
for j: =1 to 4 do
write(mas[i,j]:2);
writeln;
end;
end.
Приклад: Дані натуральні числа п та т. Отримати всі числа меньше n, квадрат суми чифр яких дорівнює т.
Program рг;
Var n,m,cr,x,I,sum: Integer;
Begin
Writeln( 'Введіть п та т : ');
Read(n,m) ;
Writeln('Відповідь: ');
For x: =n down to 0 do
begin
Sum: =0;
I:=x;
Repeat
Cf:=i mod 10;
Sum: =sum+cf;
I=i mod 10
Until 1=0
Sum: =sqr (sum);
If sum=m then writeln(x);
End;
End.
Приклад: По номеру у деякого року визначити с - номер його століття.
Program рг;
Var x,y: Integer;
Begin
Write( 'Введіть рік: ') ;
Readln(y);
X:=round(y/100+1);
Writeln(’Номep століття:', x:2);
End.
Підпрограми.
В програмуванні часто зустрічаються випадки, коли по ходу виконання програми треба виконувати одні і ті ж самі обчислення, але при різних вхідних даних. Щоб зробити програму легше та зрозуміліше, а також виключити повторення однакових операторів, виділяють ділянки, що повторюються в самостійну частину програми, яку можна використовувати багаторазово по мірі необхідності.
Автономна частина програми, яка реалізує визначений алгоритм і допускає звернення до неї із різних частин програми називається підпрограмою. Підпрограми оформлюються в вигляді замкнутих ділянок програми, що мають чітко визначений вхід та вихід. При цьому імена змінних в основній програмі і підпрограмах задані незалежно один від одного. Використання підпрограм дозволяє реалізувати один із самих прогресивних методів програмування - структурне програмування.
В мові Паскаль виділяють два вида підпрограм: процедуру та функцію. Будь-яка програма може включати в себе декілька процедур та функцій. Процедури та функції об'являються у розділі опису вслід за розділом опису змінних. Виконання програми починається з операторів основної програми. При необхідності викликається підпрограма і починають діяти її оператори. Потім управління передається в основну програму, яка продовжує виконуватися. Люба підпрограма може містити підпрограми.