Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Формування матриці в Паскалі

КонтрольнаДопомога в написанніДізнатися вартістьмоєї роботи

Друга підпрограма — процедура має назву «Z2». Вона формує вектор Х. У підпрограмі відкривається цикл по стовбцям (блок 24), задається умова «scetchik ≤2» (блок 28) якщо вона виконується то за вектор Х буде взято перший за порядком рядок в якому не більш ніж два додатних елемента (блоки 28−33). Якщо такий рядок знайдений, то тоді перериваємо цикл і знаходимо максимальний елемент цього рядку… Читати ще >

Формування матриці в Паскалі (реферат, курсова, диплом, контрольна)

Вступ

програма матриця квадратний паскаль

Турбо Паскаль з’явився на ринку програмних продуктів в 1984 році і, безсумнівно, зробив революцію в програмуванні. Чудова у Турбо Паскалі не мова, яка є лише мовою Паскаля, а програмне оточення, в якому тепер можна використовувати Паскаль і яке забезпечує користувачеві комфорт і високу швидкість роботи. З успіхом Турбо Паскаля на ринку програмних продуктів пов’язано також і розвиток численних пакетів, що полегшують застосування Паскаля для самих різних цілей.

Турбо Паскаль7.0 представлений в абсолютно новій формі. Не тільки стає ще більш швидким компілятор, але і з’являється зовсім нове програмне оточення. Суттєво те, що компілятор став вбудованим, так що з’явилася можливість розбиття програм на частини, компільовані окремо. Оскільки кожен такий модуль має власний сегмент кодів

Фірма Borland / Inprise завершила лінію продуктів Турбо Паскаль і перейшла до випуску системи візуальної розробки для Windows — Delphi. Незважаючи на це, Турбо Паскаль зберігає своє значення відмінної мови для першого знайомства зі світом «серйозного» програмування. Це пов’язано як з його чіткої логічною структурою, так і з тими можливостями, які дозволяють використовувати Турбо Паскаль для вирішення різноманітних завдань. Серед них обчислення та обробка даних, комп’ютерна графіка, робота зі звуком, системно програмування. Турбо Паскаль дозволяє застосовувати прийоми об'єктно-орієнтованого програмування, яке стало однією з провідних сучасних технологій програмування.

1. Пояснювальний текст

Я отримала завдання, в якому необхідно сформувати квадратну матрицю по вказаній формулі. Після чого з цієї матриці відповідно до заданого алгоритму необхідно отримати вектор Х. Після отримання компонентів вектора Х обчислити значення функції .

Для виконання цього завдання я обрала середу Паскаль тому, що мова Паскаль підходить для навчання програміста-початківця хорошому стилю програмування. Дозволяє на рівні з невеликими складностями програми створювати структурні програми складно об'ємних і складних обчислень. Щоб користувач при створені програм не допускав помилок або міг віднайти їх і виправити, у мові передбачено попередні вказівки типів даних, приймаючих участь в програмі. Я вважаю, що «Pascal ABC» найкращій вибір.

Для пояснення своєї програми я буду звертатися на певні блоки блок-схеми алгоритму та підпрограм-функцій та процедур.

У програмі виконується 3 підпрограми — процедури та 1 функція.

Функція має назву «z1f». Вона створена для формування масиву, який задається згідно отриманого завдання. Щоб сформувати масив відкривається цикл по стовбцям та строкам, після чого масив задається формулою, вказаною у завданні (блок 15). Блок-схема цієї функції знаходиться на сторінці 13.

Перша підпрограма — процедура має назву «Z1». Масиву A [i, j] присвоюється значення z1f (i, j) це показано в блоці 20 на сторінці 14.

Друга підпрограма — процедура має назву «Z2». Вона формує вектор Х. У підпрограмі відкривається цикл по стовбцям (блок 24), задається умова «scetchik <=2» (блок 28) якщо вона виконується то за вектор Х буде взято перший за порядком рядок в якому не більш ніж два додатних елемента (блоки 28−33). Якщо такий рядок знайдений, то тоді перериваємо цикл і знаходимо максимальний елемент цього рядку (блоки 33−37). Якщо такого рядку не знайдено тоді за вектор Х взяти останній стовпчик (блоки 38,39). Блок-схема знаходиться на сторінках 15−17.

Третя підпрограма називається «Z3». Відкривається звичайний цикл додавання всіх елементів вектора (блок 43), попередньо оброблених по функції зазначеної в завданні (блок 44), де _a — шукана Сума, Xi — лічильник для перебору елементів масиву. Значенню присвоюється вирахуване значення _a. Ця підпрограма визначає функцію згідно з завданням. Блок-схема знаходиться на сторінкі 18.

Після виконання завдання програма зупиняється і результати розрахунків виводиться в вікно результату.

2. Лістинг програми

program moy_cursovoy;

uses crt;

const r=100;

var

A: Array [1. 100,1.100] of real; {Основна матриця}

X: Array [1.100] of real; {допоміжний масив}

U, max: real;

matrixSize: Integer;

gI, gJ: integer;

function z1f (i, j: integer):real; {Функція для розрахунку значення

begin елемента матриці для завдання 1}

z1f:=exp ((j-1)*ln (2))*(abs (j-3) — 1.3)*ln ((abs (j-5)+(abs (6.5-i))))/ln (3);

end;

{Завдання 1}

procedure Z1;

var i, j: integer;

begin

write ('Введіть розмір матриці: ');

readln (matrixSize);

for j:=1 to matrixSize do

for i:=1 to matrixSize do

A [i, j]: =z1f (i, j);

end;

{Завдання 2}

procedure Z2;

var OK: boolean; {Якщо виконується умова про 2

ix, i, j, scetchik: integer; додатних елемента}

begin

ok:=false;

for j:=1 to matrixSize do

begin

scetchik:=0; {для кожної перевіряємого рядка обнуляємо кількість додатних елементів}

for i:=1 to matrixSize do {перебираємо всі елементи рядка

та рахуємо кількість додатних елементів}

begin

if A [i, j] >0 then

scetchik:=scetchik+1;

end;

if scetchik <= 2 then {якщо їх менше 2 — тоді}

begin

OK:=true; {кажемо що ми знайшли підходящий рядок}

for ix:=1 to matrixSize do

begin

X[ix]: = A [ix, j]; {Копіюємо значення зі знайденого рядка

в вектор Х}

end;

end;

if ok then {Якщо ми знайшли те що шукали, тобто перший рядок з менш ніж 2 додатними елементами, тоді перериваємо цикл перебору рядків}

break;

end;

for j:=1 to r do

begin

max:=X[ix];

if X[ix]>max then

max:=X[ix];

end;

if not ok then {якщо не Ок… тоді потрібного рядка не знайшли}

begin

{Тоді копіюємо в вектор Х останній стовпчик}

for ix:=1 to matrixSize do

begin

X[ix]: =A [matrixSize, ix];

end;

end;

end;

procedure Z3;

var _a:real;

xi:integer;

begin

{Відкривається звичайний цикл додавання всіх елементів вектора, попередньо оброблених по функції зазначеної в завданні, де_a — шукана Сума, Xi — лічильник для перебору елементів масиву}

_a:=0;

for xi:=1 to matrixSize do

begin

_a:= _a + (sqr (X[xi]))*ln (sqrt (abs (X[xi])/gi));

end;

U:=_a; {Записуємо в змінну її розраховане значення}

end;

begin

clrscr; {Чистимо екран}

writeln;

Z1; {Зчитуємо перше завдання}

for gJ:=1 to matrixSize do {Виводимо матрицю}

begin

for gI:=1 to matrixSize do

write (A[gI, gJ]: 10:5,' ');

Writeln;

end;

writeln;

writeln;

writeln;

Z2; {Зчитуємо друге завдання}

for gI:=1 to matrixSize do {Виводимо вектор}

Write (X[gI]: 10:5);

writeln;

writeln;

write ('max=', max:10:5);

writeln;

writeln;

Z3; {Зчитуємо третє завдання}

writeln (U:10:5); {Виводимо U}

readln;

end.

3. Результати виконання програми

Література

1. Т. А. Андреева Программирование на языке Pascal: — Москва, Интернет-университет информационных технологий, Бином. Лаборатор, 2006 г. — 240 с.

2. А. М. Епанешников, В. А. Епанешников Программирование в среде Turbo Pascal 7.0: — Санкт-Петербург, Диалог-МИФИ, 2004 г. — 368 с.

3. Г. Г. Рапаков, С. Ю. Ружецкая Turbo Pascal для студентов и школьников, — Санкт-Петербург, БХВ-Петербург, 2007 г. — 352 с

Показати весь текст
Заповнити форму поточною роботою