Мова програмування Turbo Pascal

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати


Зміст

1 Постановка завдання

1.1 Опис предметної області розв'язуваної задачі

1.2 Функції, що реалізуються завданням

1.3 Вхідні документи, необхідні для вирішення задачі

1.4 Опис вихідної інформації

2 Розробка інформаційного забезпечення задачі

2.1 Опис реквізитів вхідної інформації

3 Опис технології та алгоритмів розв'язання задачі та їх машинна реалізація

3.1 Опис технології введення вхідної інформації

3.2 Узагальнений алгоритм вирішення задачі та його декомпіляція на модулі

3.3 Алгоритми реалізації окремих модулів завдання

Висновок

Введення

Для оперування матричними даними вирішується комплекс різних завдань: створення модуля, створення програмного інтерфейсу, створення процедур і функцій, необхідних для вирішення поставленого завдання.

Метою даної роботи є закріплення отриманих знань з мови програмування Turbo Pascal.

Для цього створюється модуль, який служить для здійснення операцій над матрицями та викликає програма, яка використовує цей модуль

1 Постановка завдання

1.1 Опис предметної області розв'язуваної задачі

В якості предметної області розглядається програма і модуль для обробки матричних даних.

У даному проекті розглядається процеси оперування матричними даними за допомогою окремого створеного модуля

1.2 Функції, що реалізуються завданням

У даному проекті мають бути реалізовані наступні функції:

  • Заповнення вихідної матриці різними способами;

  • Формування мінору мінімального елемента вихідної матриці;

  • Визначення кількості нулів в отриманому мінорі;

  • Висновок результату на екран, у файл або на принтер

1.3 Вхідні документи, необхідні для вирішення задачі

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

За умови заповнення матриці з файлу повинен бути присутнім файл, що містить числову матрицю.

1.4 Опис вихідної інформації

Програма виводить результат на екран, у файл або на принтер.

Результат є отриману матрицю С і рядок, що оповідає про кількість нулів у матриці С.

2 Розробка інформаційного забезпечення задачі.

2.1 Опис реквізитів вхідної інформації

Вхідна інформація являє собою матрицю довільного розміру, що складається з цілих чисел.

Для матриці створений тип matr = array [1 .. n, 1 .. n] of integer,

Де n - максимально допустима кількість рядків і стовпців.

У вхідному файлі може міститися матриця будь-якої розмірності, не перевершує n. Елементи у файлі повинні бути розділені символом «Пробіл», і були розбиті на рядки. За відсутності необхідних елементів, програми заповнить відсутні елементи нулями.

Якщо у вихідних даних є помилка, програма повідомить, і надасть можливість знову ввести дані.

3 Опис технології та алгоритмів розв'язання задачі та їх машинна реалізація.

3.1 Опис технології введення вхідної інформації

При формуванні матриці датчиком випадкових чисел необхідно тільки задати розмір матриці (кількість рядків і стовпців)

При введенні матриці з клавіатури буде запропоновано ввести розмір матриці і по черзі всі її елементи. Якщо елемент буде набрано невірно, програма видасть попереджувальне повідомлення.

3.2 Узагальнений алгоритм вирішення задачі та його декомпіляція на модулі

Даний проект містить модуль і викликає програму.

Завдання модуля полягає в наступному:

  • Заповнити вихідну матрицю А;

  • Обробити матрицю А і сформувати матрицю С, шляхом викреслювання рядка та стовпця матриці А, на перетині яких знаходиться мінімальний елемент матриці А;

  • Визначити кількість нулів у матриці С;

  • Вивести результат.

Завдання викликає програми полягає в наступному:

  • Створення інтерфейсу користувача - меню;

  • Використання засобів програмного модуля.

Схема алгоритму:

3.3 Алгоритми реалізації окремих модулів завдання

Модуль Modul 1 містить наступні процедури і функції:

  • procedure create (var b: matr; t: integer); - процедура створення матриці, t - спосіб створення;

  • procedure vivod (b: matr; t: integer; x: integer); - процедура виведення результату, t - спосіб виведення, x - тип матриці (вихідна, результуюча);

  • function nomi (x: char; b: matr): integer; - функція знаходження рядка або стовпця мінімального елемента матриці;

  • function null (c: matr): integer; - функція визначає кількість нулів у матриці;

  • procedure obrab (b: matr; var c: matr); - процедура створення мінору З з матриці А;

  • function FileExists (FileName: String): Boolean; - функція визначає створений запитаний на читання файл.

Зухвала програма містить:

  • procedure menu; - процедура, що створює програмний інтерфейс типу меню.

Текст модуля modul1:

unit modul1;

interface

{Uses wincrt, winprn;}

const n = 40;

type

matr = array [1 .. n, 1 .. n] of integer;

var k1, k2: integer;

procedure create (var b: matr; t: integer);

procedure vivod (b: matr; t: integer; x: integer);

function nomi (x: char; b: matr): integer;

function null (c: matr): integer;

procedure obrab (b: matr; var c: matr);

function FileExists (FileName: String): Boolean;

implementation

function FileExists;

var

F: file;

begin

{$ I-}

Assign (F, FileName);

Reset (F);

Close (F);

{$ I +}

FileExists: = (IOResult = 0) and (FileName <>'');

end;

function null;

var k, i, j: integer;

begin

k: = 0;

for i: = 1 to k1-1 do

for j: = 1 to k2-1 do

if c [i, j] = 0 then k: = k +1;

null: = k;

end;

procedure obrab;

var x, y, i, j: integer;

begin

x: = 0; y: = 0;

for i: = 1 to k1 do

begin

if i <> nomi ('i', b) then x: = x +1;

y: = 0;

for j: = 1 to k2 do

if (j <> nomi ('j', b)) And (i <> nomi ('i', b)) then

begin

y: = y +1;

c [x, y]: = b [i, j];

end;

end;

end;

function nomi;

var min, a, i, j: integer;

begin

min: = maxint;

for i: = 1 to k1 do

for j: = 1 to k2 do

begin

if b [i, j] <min then begin

min: = b [i, j];

if x = 'i' then a: = i;

if x = 'j' then a: = j;

end;

end;

nomi: = a;

end;

procedure create;

var i, j, x, e: integer;

f: text;

ch: char;

path, s: string;

begin

case t of

1: begin {random}

randomize;

writeln ('Vvedite razmer matrici');

write ('n ='); readln (k1);

write ('m ='); readln (k2);

for i: = 1 to k1 do

for j: = 1 to k2 do

b [i, j]: = random (21) -10;

end; {random}

2: begin {keyboard}

writeln ('Vvedite razmer matrici');

write ('n ='); readln (k1);

write ('m ='); readln (k2);

writeln ('Vvedite', k1 * k2, 'elementov');

for i: = 1 to k1 do

for j: = 1 to k2 do

begin

write ('Vvedite [', i ,',', j, '] element:');

readln (s);

val (s, x, e);

if e = 0 then b [i, j]: = x

else begin

Writeln ('Matrica dolzhna sostoyat''iz celih chisel');

readln;

i: = k1;

j: = k2;

end;

end;

end; {keyboard}

3: begin {FromFile}

i: = 1; j: = 1; s :=''; k1: = 1; k2: = 1;

Writeln ('Vvedite imya faila (ili polniy put)');

readln (path);

if FileExists (path) then

begin

Assign (f, path);

Reset (f);

repeat

Read (F, ch);

if ch = # 10 then begin

i: = i +1;

k1: = k1 +1;

k2: = j-1;

j: = 1;

end;

if ((ch <> '') and (ch <> # 13) and (ch <> # 10)) then s: = s + ch

else begin

if (s <>'') then

begin

val (s, x, e);

s :='';

if e = 0 then begin

b [i, j]: = x;

j: = j +1;

end

else begin

writeln ('Oshibka v dannih');

end;

end;

end;

until Eof (F);

if s <>''then begin

val (s, x, e);

s :='';

if e = 0 then begin

b [i, j]: = x;

j: = j +1;

end

else begin

writeln ('Oshibka v dannih');

end;

end;

Close (f);

end {FileExist}

else begin

writeln ('Fail ne sushestvuet');

readln;

end;

end; {FromFile}

end; {case}

end; {procedure}

procedure vivod;

var i, j: integer;

ff, fp: text;

path: string;

line: string;

begin

case t of

1: begin

for i: = 1 to k1-x do

begin

for j: = 1 to k2-x do

write (b [i, j]: 6);

writeln;

end;

if x = 1 then Writeln ('Kolichestvo nuley:', null (b));

end;

2: begin

Writeln ('Vvedite imya faila (ili polniy put)');

readln (path);

assign (ff, path);

rewrite (ff);

for i: = 1 to k1-x do

begin

for j: = 1 to k2-x do

write (ff, b [i, j], '');

writeln (ff);

end;

Writeln (ff, 'Kolichestvo nuley:', null (b));

Close (ff);

Writeln ('Matrica uspeshno sohranena v faile', path);

end;

(* 3: begin {Printer}

AssignDefPrn (fp);

for i: = 1 to k1 do

for j: = 1 to k2 do

Writeln (fp, b [i, j], '');

if KeyPressed and (ReadKey = # 27) then

begin

AbortPrn (Prn);

Break;

end;

Close (fp);

end; *) {Printer}

end; {case}

end; {Procedure}

end.

Текст викликає програми:

uses crt, modul1;

var A, c: matr;

f1, f2: boolean;

procedure menu;

var choise, cinp: char;

inp, e: integer;

begin

clrscr;

Writeln ('Menu');

Writeln ('1. Vvod matrici A');

Writeln ('2. Obraborat''matricu');

Writeln ('3. Vivesti rezultat');

Writeln ('4. Vihod');

choise: = readkey;

if choise = # 27 then halt;

if ((choise <> "1") and (choise <> '4 ') and (f1 = false)) then

begin

Writeln ('Snachala neobhodimo sozdat''matricu A');

cinp: = readkey;

if cinp = # 27 then halt;

menu;

end;

if ((choise = '3 ') and (f2 = false)) then

begin

Writeln ('Snachala neobhodimo obrabotat''matricu A');

cinp: = readkey;

if cinp = # 27 then halt;

menu;

end;

Case choise of

'1 ': Begin

f1: = true;

clrscr;

Writeln;

Writeln ('1. Sozdat sluchainuyu matricu ');

Writeln ('2. Vvesti s klaviaturi ');

Writeln ('3. Iz faila ');

cinp: = readkey;

val (cinp, inp, e);

if ((e = 0) And ((inp = 1) Or (inp = 2) Or (inp = 3))) then

begin

create (A, inp);

menu;

end

else begin

writeln ('Neverniy vibor');

readkey;

menu;

end;

end; {1}

'2 ': Begin

f2: = true;

obrab (a, c);

Writeln ('Matrica uspeshno obrabotana:');

Writeln ('Ishodnaya matrica:');

vivod (A, 1,0);

Writeln ('Naiden minor minimalnogo elementa [', nomi ('i', A ),',', nomi ('j', A ),']');

readkey;

menu;

end;

'3 ': Begin

clrscr;

Writeln;

Writeln ('1. Vivesti na ekran ');

Writeln ('2. Sohranit v fail ');

Writeln ('3. Raspechatat''');

cinp: = readkey;

val (cinp, inp, e);

if ((e = 0) And ((inp = 1) Or (inp = 2) Or (inp = 3))) then

begin

vivod (C, inp, 1);

readkey;

menu;

end

else begin

writeln ('Neverniy vibor');

readkey;

menu;

end;

end;

'4 ': Halt;

else begin

writeln ('Neverniy vibor');

readkey;

menu;

end;

end; {Case}

end;

BEGIN

clrscr;

f1: = false;

f2: = false;

menu;

readkey;

END.

Висновок

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

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Контрольна робота
58.3кб. | скачати


Схожі роботи:
Модульне програмування Turbo Pascal
Розробка програм у середовищі програмування Turbo Pascal 70
Розробка програм у середовищі програмування Turbo Pascal 7 0
Програмування трьохмірної графіки та анімації засобами Turbo Pascal
Складання програм для вирішення задач на мові програмування Turbo Pascal
Мова програмування Pascal
Мова програмування Turbo-Basic
Основні відомості про алгоритмічну мову Turbo Pascal Графіка Pascal
Turbo Pascal
© Усі права захищені
написати до нас